Android自定义之TextView跑马灯的监听
2015-07-09 20:55
686 查看
TextView都有跑马灯的效果,如果说让你去监听跑马灯效果的执行,我觉得这个需求有点二了,但是也要实现。思路:1.自定义View 继承TextView 这种方法过于麻烦,只是监听一个跑马灯而已。2.自定义SPan。简单好用,扩展TextView的功能。
关键代码如下:
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>
很简单的小功能,大家就看代码吧。 源码下载地址: https://github.com/flyme2012/EasyListenerSpan
来自为知笔记(Wiz)
关键代码如下:
@Override | |
public void draw(Canvas canvas, CharSequence text, int start, int end, | |
float x, int top, int y, int bottom, Paint paint) { | |
canvas.save(); | |
canvas.drawText( text.toString(), x - startX, y, paint); | |
canvas.restore(); | |
int measureText = (int) paint.measureText(text, 0, text.length()); | |
if (valueAnimator == null ) { | |
initAnimator(measureText - mView.getWidth()); | |
} | |
} | |
private int startX = 0 ; | |
private final static int DEFULT_DURATION = 2000 ; | |
private int duration = DEFULT_DURATION ; | |
@Override | |
public int getSize(Paint paint, CharSequence text, int start, int end, | |
FontMetricsInt fm) { | |
return 40; | |
} | |
private void initAnimator(int width ){ | |
valueAnimator = ValueAnimator.ofInt(0, width , 0 ); | |
valueAnimator.addUpdateListener(new AnimatorUpdateListener() { | |
@Override | |
public void onAnimationUpdate(ValueAnimator animation) { | |
startX = (Integer) animation.getAnimatedValue() ; | |
mView.invalidate(); | |
} | |
}); | |
valueAnimator.setInterpolator(new LinearInterpolator()); | |
valueAnimator.setDuration(duration); | |
valueAnimator.addListener(new AnimatorListenerAdapter() { | |
@Override | |
public void onAnimationRepeat(Animator animation) { | |
if (mEasySpanListener != null ) { | |
mEasySpanListener.over(); | |
} | |
} | |
}); | |
valueAnimator.setRepeatCount(Integer.MAX_VALUE); | |
valueAnimator.start(); | |
} |
很简单的小功能,大家就看代码吧。 源码下载地址: https://github.com/flyme2012/EasyListenerSpan
来自为知笔记(Wiz)
相关文章推荐
- android5.1 Settings themes主题分析
- android优化
- Android:图片处理小结
- Android ListView Item 设置是否选择状态
- android 返回键两次退出
- android:windowSoftInputMode属性详解
- Pro Android学习笔记(一)——ContentProvider(上)
- Android ListView getView()方法重复调用导致position错位
- Android-69-音视频开发:AnyChat for Android SDK
- Android底部Tab页基于ViewPager的实现
- 【Android】【Framework】查看手机当前Activity栈内容
- 【Android】【Framework】查看手机当前Activity栈内容
- 【Android】【Framework】查看手机当前Activity栈内容
- 【Android】【Framework】查看手机当前Activity栈内容
- 【Android】【Framework】查看手机当前Activity栈内容
- 【Android】【Framework】查看手机当前Activity栈内容
- 【Android】【Framework】查看手机当前Activity栈内容
- Android中EditTex焦点设置和弹不弹出输入法的问题
- 初学_Android4高级编程-11 Service&AsyncTask&Alarm
- 初学_Android4高级编程-10 Content Provider