乐码库:一个极速、放心、纯净的下载站! 更新: 资源发布
  • 您的位置:首页 > 技术文档 > AndRoid > Android 自定义控件实现显示文字的功能
  • 收藏本页
      Android 自定义控件实现显示文字的功能
      发布时间:2016-12-21 08:07:07 关键词: Android,逐个显示文字,Android,逐个显示文字实现代码
      内容简介:这篇文章主要介绍了Android 自定义控件实现显示文字的功能的相关资料,需要的朋友可以参考下

    Android 自定义控件实现显示文字的功能

    自定义控件—–逐个显示文字

    ONE Goal ,ONE Passion !

    前言:

    今天要实现的效果时.让我们的文字一个一个显示出来.上效果图吧:

    实现原理:

    1,拿到要显示的文字.

    2,计算文字显示的速率
    字体显示的速度 v = 总的字体长度 / 总的显示时间

    3,将文字根据速率显示到控件上.

    自定义View:

     public class printTextView extends TextView {
    
      /**
       * 字体显示出来的时间
       */
      private int DURATION = 8000;
    
      public printTextView(Context context) {
        this(context, null);
      }
    
      public printTextView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
      }
    
      public printTextView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    
    
      }
    
    
      public void printString(String str) {
    
    
        if (str != null && str != "") {
    
          // 字符串的长度
          final int lenght = str.length();
    
    
          final char[] c = new char[str.length()];
          //将字符串转换成字符数组
          for (int i = 0; i < str.length(); i++) {
            c[i] = str.charAt(i);
          }
    
    
          ValueAnimator animator = ValueAnimator.ofFloat(0, 1);
          animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
    
              // 字体显示的速度 v = 总的字体长度 / 总的显示时间
              float v = (float) lenght / (float) DURATION;
              // 动画执行速度
              float fraction = (float) animation.getAnimatedValue();
              //动画不同阶段字体应该显示的个数
              int s = (int) (v * fraction * DURATION);
    
              setText(c, 0, s);
    
            }
          });
          animator.setDuration(DURATION);
          animator.start();
        }
    
    
      }
    
    
      }
    
    

    跑起来:

     

     public class ScaleActivity extends AppCompatActivity {
    
    
      private printTextView print_text;
      String str = "我和你吻别,在无人的街.我和你吻别在狂乱的夜.这波给你103分," +
          "多一分宽容,多一分耐心,更重要的是多一分父爱.";
    
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_scale);
        initView();
      }
    
    
    
    
        print_text = (printTextView) findViewById(R.id.print_text);
        print_text.printString(str);
      }
      }
    
    

    R.layout.activity_scale布局文件

     <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout xmlns:android="http://  schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:layout_margin="20dp"
      android:orientation="vertical"
      tools:context="com.example.customview.activity.ScaleActivity">
     <com.example.customview.view.printTextView
        android:id="@+id/print_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
     />
     </LinearLayout>
    

    ok.我们的文字已经可以打印显示到屏幕了.

    感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

      最新更新
      热门排行榜