介绍
在Android项目中利用TextView实现一个自动滚动功能吗?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
在做安卓应用的开发的时候,横向滚动或者要做出跑马灯的效果很简单,TextView本身的属性就支持,只要设置准确就会滚动,开发起来比较简单,但是TextView不支持垂直滚动,那么垂直滚动就需要自己来实现了,很多网友提供的垂直滚动方案都是千篇一律,使用滚动视图来进行滚动,但是都不完的美,做起来有些别扭。有一位网友给出的歌词的滚动思路明确,能从根本上解决问题,因此我实现的这个滚动是在这位网友的基础上实现,封装了一个视图,视图继承自TextView。
关键点:
1,重写onDrow方法,计算每次的滚动的距离。
2,计算视图的Y轴的重点,让当前显示的处于高亮显示状态。
3,定时的刷新视图使其界面不断的刷,先出现滚动的效果。
4,实现数据结构,将数据传给视图。
下面看看主要代码:
1,创建一个类继承TextView
公共VerticalScrollTextView(上下文语境){ 超级(上下文); init (); } 公共VerticalScrollTextView(上下文语境,AttributeSet attr) { 超级(上下文,attr); init (); } 公共VerticalScrollTextView(上下文语境、AttributeSet attr int i) { 超级(上下文,attr,我); init (); } 私人空间init () { setFocusable(真正的);//这里主要处理如果没有传入内容显示的默认值 如果(列表==null) { 列表=new ArrayList(); 通知森=new通知(0,“暂时没有通知公告“); 列表。添加(0,sen); }//普通文字的字号,以及画笔颜色的设置 mPaint=new油漆(); mPaint.setAntiAlias(真正的); mPaint.setTextSize (16); mPaint.setColor (Color.BLACK); mPaint.setTypeface (Typeface.SERIF);//高亮文字的字号,以及画笔颜色的设置 mPathPaint=new油漆(); mPathPaint.setAntiAlias(真正的); mPathPaint.setColor (Color.RED); mPathPaint.setTextSize (16); mPathPaint.setTypeface (Typeface.SANS_SERIF); }
3,从写onDraw方法,并计算文字的行距,并且将将普通文字和高亮文字,在这个方法中绘制出来
& lt;及# 63;xml version=?.0”;编码=皍tf-8", # 63;比; & lt; !——显示滚动滚动视图。——比; http://schemas.android.com/apk/res/android" & lt; LinearLayout xmlns: android=?; android: layout_width=癴ill_parent" android: layout_height=癴ill_parent" android:取向=皏ertical"比; & lt; com.demo.xsl.text.SampleView android: id=癅 + id/sampleView1" android: layout_width=癴ill_parent" android: layout_height=癴ill_parent" android:背景=癅drawable/selector"/比; & lt;/LinearLayout>
7, java代码中调用,传递数据:
包com.demo.xsl.text; 进口java.util.ArrayList; 进口并不知道; 进口android.app.Activity; 进口android.os.Bundle; 进口handler; 公开课VerticalScrollTextActivity延伸活动{ SampleView mSampleView; @Override 公共空间>看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。在Android项目中利用TextView实现一个自动滚动功能