android TextView 垂直自动滚动字幕实现

[复制链接]
查看11 | 回复0 | 2013-2-25 14:51:24 | 显示全部楼层 |阅读模式
android TextView 垂直自动滚动字幕实现【收藏此文档】textview 垂直自动滚动字幕实现
前段时间,在网上搜到一个帖子,textview水平自动滚动字幕的实现,今日项目需要垂直滚动字幕。其实现原理和水品一样。都是重写textview的onDraw方法。
实现垂直自动滚动字幕需要2点需要注意
1.需要根据textview的宽度和字体的大小计算滚动字幕有多少行。实现这个功能,需要重新写两个方法:1.onMeasure,2.onDraw.因为需要获取textview的宽度,于是需要在onMeasure方法里面调用如下代码。具体方法如下:[java] view plaincopy1.public VerticalScrollTextView extends TextView {2.private float step =0f;3.private Paint mPaint;4.private String text;5.private float width;6.private List textList = new ArrayList();//分行保存textview的显示信息。7.8.public VerticalScrollTextView(Context context, AttributeSet attrs) {9.
super(context, attrs);
10. }11. 12. 13. public VerticalScrollTextView(Context context) {14. super(context);
15. }16. 17. @Override18. protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
19. super.onMeasure(widthMeasureSpec, heightMeasureSpec);20. width = MeasureSpec.getSize(widthMeasureSpec); 21.
final int widthMode = MeasureSpec.getMode(widthMeasureSpec);22. if (widthMode != MeasureSpec.EXACTLY) { 23.
throw new IllegalStateException("ScrollLayout only canmCurScreen run at EXACTLY mode!");24. }25. 26. float length = 0;
27. if(text==null|text.length()==0){28.
return ;29.
}30.
31. 32.
//下面的代码是根据宽度和字体大小,来计算textview显示的行数。33. 34. textList.clear();35. 36. StringBuilder builder = new StringBuilder();37. for(int i=0;i= this.getHeight()+textList.size()*mPaint.getTextSize()) {68.
step = 0;69. }
70. }71. 72. }
[url=http://blog.csdn.net/fengyoujie/article/details/7296941][/url]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行