思路:
1.自定义View 继承TextView 这种方法过于麻烦,只是监听一个跑马灯而已。
2.自定义SPan。简单好用,扩展TextView的功能。
关键代码如下:
| @Override | |
| end, | |
| paint) { | |
| .save(); | |
| - startX, y, paint); | |
| .restore(); | |
| .length()); | |
| null ) { | |
| .getWidth()); | |
| } | |
| } | |
| 0 ; | |
| 2000 ; | |
| DEFULT_DURATION ; | |
| @Override | |
| end, | |
| fm) { | |
| 40; | |
| } | |
| width ){ | |
| 0 ); | |
| AnimatorUpdateListener() { | |
| @Override | |
| animation) { | |
| .getAnimatedValue() ; | |
| .invalidate(); | |
| } | |
| }); | |
| LinearInterpolator()); | |
| .setDuration(duration); | |
| AnimatorListenerAdapter() { | |
| @Override | |
| animation) { | |
| null ) { | |
| .over(); | |
| } | |
| } | |
| }); | |
| .MAX_VALUE); | |
| .start(); | |
|
|
Span本身就是对TextView的一个功能增强。
使用:
String text = "这个是用来测试的,TextView的跑马灯效果,想要监听他的跑完的事件用的。" ;
SpannableString spannableString = new SpannableString(text);
EasySpan easySpan =new EasySpan(MainActivity.this,test);
easySpan.setDuration(10000);
easySpan.setEasySpanListener(new EasySpanListener() {
@Override
public void over() {
Log.i("Test", "over") ;
}
});
spannableString.setSpan(easySpan, 0, text.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
test.setText(spannableString);
来源: <https://github.com/flyme2012/EasyListenerSpan/blob/master/src/com/example/easylistenerspan/MainActivity.java>