listview实现跑马灯效果,和焦点获取
2015-08-29 17:51
465 查看
ListView中经常需要让条目出现动画效果,跑马灯就是一种。
listview可以基于万能适配器开发,地址:
http://blog.csdn.net/lmj623565791/article/details/38902805。
如果要将整个listview都进行跑马灯比较容易。
首先自定义一个View,叫ItemTextView,代码如下:
然后在xml文件的Listview中填入android:focusable=”true”;保持焦点。
在item.xml中需要加入android:singleLine=”true”
和android:ellipsize=”marquee”,也可以加入其他跑马灯属性,比如跑马灯的次数等android:marqueeRepeatLimit=”marquee_forever”。
这样就可以整个listview都开始跑马灯效果了。
但是如何让选中的item进行跑马灯,选中另一个,上一个不进行动画小工呢?
这时候在MainActivity中需要添加两个方法:
这样就实现了点击哪个item哪个动,其他不动的效果。
listview可以基于万能适配器开发,地址:
http://blog.csdn.net/lmj623565791/article/details/38902805。
如果要将整个listview都进行跑马灯比较容易。
首先自定义一个View,叫ItemTextView,代码如下:
package com.example.list; import android.content.Context; import android.graphics.Rect; import android.util.AttributeSet; import android.widget.TextView; public class ItemTextView extends TextView { public ItemTextView(Context context) { super(context); } public ItemTextView(Context context, AttributeSet attrs) { super(context, attrs); } public ItemTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public boolean isFocused() { return true; } @Override protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { super.onFocusChanged(focused, direction, previouslyFocusedRect); } }
然后在xml文件的Listview中填入android:focusable=”true”;保持焦点。
在item.xml中需要加入android:singleLine=”true”
和android:ellipsize=”marquee”,也可以加入其他跑马灯属性,比如跑马灯的次数等android:marqueeRepeatLimit=”marquee_forever”。
这样就可以整个listview都开始跑马灯效果了。
但是如何让选中的item进行跑马灯,选中另一个,上一个不进行动画小工呢?
这时候在MainActivity中需要添加两个方法:
mListView.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View view, int position, long id) { if(position == id){ mTextView = (TextView) view.findViewById(R.id.tv_describe); view.isFocusableInTouchMode(); view.requestFocusFromTouch(); mTextView.setEllipsize(TruncateAt.MARQUEE); } } @Override public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } }); mListView.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { }else{ mTextView.setEllipsize(TruncateAt.END); //这里可以选择别的样式,需要将原来在item.xml文件中的android:ellipsize="marquee"去掉。 } } }); }
这样就实现了点击哪个item哪个动,其他不动的效果。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories