做开发也快三年了,遇到问题总是百度,看别人的博客,可以说我的一半技能来自CSDN,解决了不少问题,感谢各位博主提供给我的帮助,今天我也尝试写一篇属于自己的博文,希望能给大家带来帮助。
最近着手一个新项目,其中一个功能是要实现每隔几秒,TextView的内容改变,文本变化的时候要带特效。
大致思路就是在子线程中更新UI,用handler来实现
代码如下:handler部分
private Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case 0: mDataBinding.tvMessage.setText(tv_notice); // mDataBinding.tvMessage.setAnimateType(HTextViewType.EVAPORATE); // mDataBinding.tvMessage.animateText(tv_notice); break; case 1: break; } } };
looper部分:
class LooperThread extends Thread{ @Override public void run() { super.run(); try { for (int i = 0; i < mNotice.size(); i++) { if (i==mNotice.size()){ i=0; } tv_notice=mNotice.get(i); Thread.sleep(3000); Message m=new Message(); m.what=0; handler.sendMessage(m); } } catch (InterruptedException e) { e.printStackTrace(); } } }
然后,
new LooperThread().start();每隔几秒切换文字的效果就实现了,回头再看需求,额,文本改变的时候需要特效,看了TextView所有的属性,我要的效果是上下切换,TextViw好像也就有个跑马灯效果,去GitHub瞅瞅,果然没让我失望,HTextView(地址:https://github.com/hanks-zyh/HTextView),还有一个 fadingtextview(地址:https://github.com/rosenpin/FadingTextView),先用第一个试试呗,看使用步骤:
1:在Module的build.gradle#dependencies添加:
compile 'hanks.xyz:htextview-library:0.1.2'
2:在布局文件的根节点中添加命名空间:
xmlns:htext="http://schemas.android.com/apk/res-auto"
3:布局文件中添加HTextView:
<com.hanks.htextview.HTextView android:id="@+id/tv_message" htext:animateType="anvil" android:textSize="14sp" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white_background" android:gravity="start|center_vertical" android:singleLine="true" android:textColor="@color/blue_background" />4:在java代码中使用,非常简单,在handler部分修改两行代码:
private Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case 0: mDataBinding.tvMessage.setAnimateType(HTextViewType.EVAPORATE); mDataBinding.tvMessage.animateText(tv_notice); break; case 1: break; } } };5:特效有以下几种
/** * 支持的动画类型 * Created by hanks on 15-12-14. */ public enum HTextViewType { SCALE, EVAPORATE, FALL, PIXELATE, ANVIL, SPARKLE, LINE }
6:ps sdk版本需要在15以上。
时间关系,就不讲FadingTextView了,有兴趣的点地址进去看就可以,一样简单好用,
希望对大家有帮助!