13、提升Android UI流畅度的建议
来源:互联网 发布:淘宝考试答题器 编辑:程序博客网 时间:2024/04/30 21:25
在一个Android应用程序中,UI是与用户直接面对面交互的,UI的流畅度,直接影响了用户体验。
一、布局文件的优化
1、减少布局的层次
很多时候,实现一个界面有很多种方式,我们应该就可能的减少布局的层次,不要一味地嵌套再嵌套。
可以通过HierarchyViewer工具来查看布局层次。
2、尽量用TextView代替ImageView
按钮在布局中是最常见使用的控件,我们可以用Button,ImageButton,ImageView,TextView来实现按钮的效果。但是图片的加载是很慢的,之前在做联系人拨号盘时,拨号盘的布局是4行3列的Tablayout,每个TabRow是一个ImageButon。这样看起来是会省事不少,只需要UI给切24张图即可。然而,我们在优化联系人启动速度的时候,发现拨号盘加载布局耗时60ms。60ms对于仅仅加载一个布局来说,是很耗时的了。由于分割线的原因,我采用了一个垂直的LinearLayout嵌套六个水平的LinearLayout,其中拨号盘部分的四个LinearLayout再嵌套三个垂直的LinearLayout。每个LinearLayout包含一个数字TextView和字母的TextView。
2、使用include和merge标签重用布局文件
相同的布局,例如顶部栏和底部栏,可以使用include重用,既易于后期修改,也增加布局的复用性。
3、ViewStub按需加载布局
viewstub可以实现延迟加载View的作用。当调用ViewStub的setVisibility函数设置为可见或则调用inflate初始化该View的时候,ViewStub引用的资源开始初始化,然后引用的资源替代ViewStub自己的位置填充在ViewStub的位置。在联系人详情界面中,需要显示的内容很多,包括姓名,号码,邮箱,工作,备注,昵称,铃声,地址,生日,网址,关系,分组。然而大部分人添加联系人并不会全都填写,所以很多布局如果预先加载就会浪费,使用ViewStub可以有效的解决这个问题,
二、耗时操作放在多线程,防止阻塞UI线程。
使用handle多线程或者异步任务加载耗时任务,如数据库操作,IO操作,网络读取等
三、ListView的优化
1、使用ViewHolder,设置TAG,
public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = mInflater.inflate(R.layout.list_item_icon_text, null); holder = new ViewHolder(); holder.icon1 = (ImageView) convertView.findViewById(R.id.icon1); holder.text1 = (TextView) convertView.findViewById(R.id.text1); convertView.setTag(holder); } else{ holder = (ViewHolder)convertView.getTag(); } holder.icon1.setImageResource(R.drawable.icon); holder.text1.setText(mData[position]); return holder;}static class ViewHolder { TextView text1; ImageView icon1;}
2、快速滑动时,不加载数据。
重写OnScrollListener的onScrollStateChanged()方法。
- OnScrollListener.SCROLL_STATE_IDLE–>停止滑动
- OnScrollListener.SCROLL_STATE_TOUCH_SCROLL–>正在滑动
- OnScrollListener.SCROLL_STATE_FLING –>快速滑动
其中OnScrollListener.SCROLL_STATE_FLING建议不要加载数据。在通话记录界面,号码归属地并没有写入数据库,而是通过查询得到。当通话记录过多,而ListView还没有缓存这些归属地,那么快速滑动的时候就会感觉到严重卡顿。我们可以在快速的时候,停止加载归属地,结束滑动的时候重新加载归属地。
四、使用缓存
使用缓存,优化数据读取速度。
五、使用动画。
比如界面切换页面使用动画比直接显示感觉就会好很多。
1 0
- 13、提升Android UI流畅度的建议
- android ui流畅度提示
- Android提高UI流畅度
- Android UI 流畅度相关
- 提升 Android 性能的建议
- 提升 Android 性能的建议
- 效率大提升 Android 4.4流畅运行背后的原理
- 提高UI流畅度
- Android小记:提升 Android 性能的建议
- 提升Android程序的十条建议
- 10 条提升 Android 性能的建议
- 10 条提升 Android 性能的建议
- 10 条提升 Android 性能的建议
- 10 条提升 Android 性能的建议
- 10 条提升 Android 性能的建议
- 11、提升Android性能的建议
- 10 条提升 Android 性能的建议
- 10 条提升 Android 性能的建议
- Java网络聊天程序
- C语言运算符的优先级和结合性
- jQuery中的动画
- dateutil和pytz的安装
- BZOJ3212 A Simple Problem with Integers
- 13、提升Android UI流畅度的建议
- leetcode刷题日记——Product of Array Except Self
- Qt遇到奇怪的问题--FTH
- bzoj3994 约数个数和 数论&莫比乌斯反演
- 杂记<一>
- [腾讯云]数据盘分区以及格式化
- 用GitHub构建个人Maven仓库
- Hbase过滤器
- Spark:环境搭建