Android控件之ListView的开发技巧
来源:互联网 发布:淘宝转让 编辑:程序博客网 时间:2024/04/30 08:35
ListView的重要属性
在实际项目中,ListView是频繁用到的控件之一,在开发过程中总结一些有助于开发的知识:
ListItem之间的分隔线
android:divider="#ff0000" 可以是颜色和图片android:dividerHeight="1px" 要显示分隔线,分隔线的高度必须大于0android:headerDividersEnabled="true" headview下是否加分隔线android:footerDividersEnabled="true" footview是否加分隔线
ListView的滚动块
滚动块实际上是所可以用于所有view,有些属性是通用的,有些实行是listView特有的。
android:scrollbars="vertical" 显示垂直、水平滚动块 android:verticalScrollbarPosition="left" //垂直的scrollBar是显示在左边或者右边
android:scrollbarStyle="insideOverlay" inside表示显示在padding区域的内侧,outside表示显示在padding区域的外侧。Inset表示将自动增加padding以显示ScrollBar(这意味着内容区域将缩小),Overlay表示不会增加padding以显示ScrollBar,而是浮动在内容上面(可能会遮住内容)
scrollBar的淡出效果 android:fadeScrollbars //scrollbar不滚动隐藏 android:scrollbarDefaultDelayBeforeFade android:scrollbarFadeDuration//淡出的时间
ScrollBar由两部分组成,一个是Track(滑道),一个是Thumb(滑块),其定制的属性为: android:scrollbarThumbHorizontal="@drawable/ic_launcher" android:scrollbarThumbVertical="@drawable/ic_launcher" android:scrollbarTrackHorizontal="@drawable/ic_launcher" android:scrollbarTrackVertical="@drawable/ic_launcher" android:scrollbarSize="0dp"
快速滚动条 android:fastScrollEnabled="true"
头尾滑动效果
滑过Listview顶部和底部的画面效果android:overScrollHeader="@drawable/ic_launcher"android:overScrollFooter="@drawable/ic_launcher"android:overScrollMode="never" ifContentScrolls、always
显示的位置
android:stackFromBottom="true" 我们看到的视图将是Listview最底部的数据
选中效果
android:drawSelectorOnTop="true" 选中的效果是显示在上面还是下面,上面会覆盖文字
选择模式
android:choiceMode="singleChoice" 有四个值,联想出来后很好理解
绘图的质量
android:drawingCacheQuality设置绘图时半透明质量。有以下值可设置:auto(默认,由框架决定)/high(高质量,使用较高的颜色深度,消耗更多的内存)/low(低质量,使用较低的颜色深度,但是用更少的内存)。
ListView事件响应情况
android:duplicateParentState如果设置此属性,将直接从父容器中获取绘图状态(光标,按下等)。 见下面代码部分,注意根据目前测试情况仅仅是获取绘图状态,而没有获取事件,也就是你点一下LinearLayout时Button有被点击的效果,但是不执行点击事件android:longClickable设置是否响应长按事件.
边框渐变
android:fadingEdge设置拉滚动条时 ,边框渐变的放向。none(边框颜色不变),horizontal(水平方向颜色变淡),vertical(垂直方向颜色变淡)。参照fadingEdgeLength的效果图android:fadingEdgeLength设置 边框渐变的长度。
布局调整
android:fitsSystemWindows设置布局调整时是否考虑系统窗口(如状态栏)
ListView的实现技巧和优化
ListView的显示需要适配器来达到目的,那么我们如何优化ListView的显示呢?
1、使用convertView,来缓存视图,达到复用的效果,减少内存,效率提高2倍。
@Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub ViewHolder holder; if (null==convertView) { convertView=inflater.inflate(R.layout.item_offline_list, null); holder=new ViewHolder(); holder.title=(TextView)convertView.findViewById(R.id.item_listview_Title); }else{ holder = (ViewHolder) convertView.getTag(); } holder.title.setText(mDatas.get(position).getTitle()); return convertView;}private class ViewHolder{ TextView title; }
2、优化Item布局
经常listView中的的Item布局时十分复杂的 ,像聊天布局通常都有评论列表 点赞列表,访问者列表,这时候在Item布局中尽量不要嵌套太多层次的布局,
3、只刷新变化的部分View
4、 只加载当前视图需要的图片,并且在滑动列表的时候停止后台的加载线程,为UI线程空出cpu资源,在停止的时候再请求。
5、图片需要缓存,这点上有很多的框架可以拿来使用。如:Android-Universal-Image-Loader
0 0
- Android控件之ListView的开发技巧
- android开发之Listview的使用技巧
- android控件开发之ListView
- 【Android 开发】:UI控件之 ListView 列表控件的使用
- Android开发之自定义控件--ListView的下拉刷新功能
- Android ListView开发技巧
- Android开发--控件ListView
- 【Android 开发】:UI控件之 ListView 列表控件的使用(二)
- Android群英传之ListView的使用技巧
- Android 控件之ListView
- Android控件之ListView
- Android控件之ListView
- android控件之ListView
- Android控件之ListView
- Android控件之ListView
- Android控件之ListView
- Android控件之ListView
- Android之ListView控件
- WINCE Driver 心得总结
- POJ2686--Travelling by Stagecoach
- main函数执行前、后再执行的代码
- Codeforces 570 B.Simple Game
- malloc/free函数的简单实现及思考
- Android控件之ListView的开发技巧
- HDFS源码分析(六)-----租约
- 设计模式之工厂方法模式---factory method
- 建造者模式
- iOS Runtime 初体验
- Web开发之PHP框架(二)-Laravel数据库初步及MVC
- 黑马程序员--Java集合框架(二)
- poj1184 聪明的打字员 BFS+剪枝
- python 的几个内置函数(lambda ,zip, filter, map, reduce )用法