关于安卓跑马灯效果的课题研究:
相对于安卓系统来言,安卓是一个比较智能的移动设备,然而对于这些设备,中所运行的app,中难免出现一些需要跑马灯似的效果实现例如:需要提醒用户,以及特别公告之类的,这时就需要一个跑马灯的效果来显示这一段特别提醒,这样不仅醒目,而且给用户无论是感官上还是用户体验上都是绝佳的选择。
跑马灯的实现有很多种方式,接下来 ,我将向大家具体讲述xml文件中实现安卓跑马灯效果的步骤:
1.对于这一效果的实现,只有在TextView这一控件中实现。而这一实现需要改写xml文件。而这一xml文件存在于android项目res目录下的。
关于这一效果的实现,在TextView中有一个属性是android:ellipsize这一属性,给定其一个值为marquee的值,意为滚动效果。
然而这个时候就需要考虑一个很重要的因素,那就是,既然是跑马灯效果,那么它是会滚动的,而这个滚动的次数就成了问题,解决这个问题就需要TextView控件中的属性
android:marqueeRepeatLimit这一属性,给其设定的值为forever_marquee,设置为无限次数滚动。
然而,在安卓中它会根据你输入的文字以及设备的分辨率问题,当你 的文字个数到达一定数量是就会自动的换行,这样对于跑马灯的效果则就没有了意义,解决这一问题,用到了TextView这一控件中的android:ScrollHorizontally这一属性,将其设定为true。
2, 由于其跑马灯的实现需要单行的滚动,则这里就需要其TextView中的android:singleline这一属性,设定其为true。
这时,TextView就具备了跑马灯的效果,是不是感觉很简单呢。但是接下来问题又出现了,就是当这一安卓程序运行在虚拟机上发现并没有出现跑马灯的效果,这个又是为什么呢?
这是因为,跑马灯效果需要TextView获取当前的焦点,然而对于这一控件来说,它默认其中clickable,longclickable,focusable,focusablelntouchmode这四个属性都是false,所以跑马灯效果因为获取不到焦点的问题使其不能实现。
解决这个问题则需要将,focusable,focusablelntouchmode这两个属性的值修改为true,这样一来解决了TextView获取焦点这一个问题。从而使其跑马灯效果完美展示。
具体的代码如下:
<TextView
android:id="@+id/tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:marqueeRepeatLimt="forever_marquee"
android:singLine="true"
android:hcrollHorizontally="true"
android:text="跑马灯效果展示"
android:textcolor="#ff0000"
android:textSize="20dp"
/>