优化listview 有哪些方法
2016-12-23 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:117538
获赞数:517193
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。
向TA提问 私信TA
关注
展开全部
1.重用 convertView 用以避免重复创建 View,重复创建 View 代价较大,而且如果重用 view 不改变宽高,重用View可以减少重新分配缓存造成的内存频繁分配/回收;
2. 避免在 getView 中有 重复调用的 findViewByIdfindViewById 的实现是遍历,如果你定义的 View 越复杂代价越大。Google 推荐的做法是用 ViewHolder,然后保存在 view 的 tag 中。现在 RecyclerView 也是强制使用 ViewHolder 了。
3. 设置 View (如 TextView#setText )之前先对比数据是否有改变一般来说,【比较两个数据的代价】远小于【 View 的重绘的代价】
4. 避免在 getView 函数中直接加载 Image 或做其他比较耗时的操作加载本地 Image 需要载入内存以及解析 Bitmap ,都是比较耗时的操作。用户快速滑动列表时,会大量调用 getView ,而 getView 是在主线程中被调用的。如果你在 getView 函数中直接加载 Image 或做其他耗时操作,就会造成滑动比较卡。加载 ImageView 的解决方案就是开一个线程去把做这事。有很多第三库可以做这事。
5. ListView 中元素避免半透明半透明绘制需要大量乘法计算,在滑动时不停重绘会造成大量的计算,在比较差的机子上会比较卡。在设计上能不半透明就不不半透明。实在要弄的话我个人是用个比较偷懒的方法,是在滑动的时候把半透明设置成不透明,滑动完再重新设置成半透明。
6. 尽量开启硬件加速硬件加速提升巨大,避免使用一些不支持的函数导致含泪关闭某个地方的硬件加速。当然这一条不只是对 ListView。
7. 用 ListView 威力加强版 -- RecyclerView更多的新武将,更多的姿势,更规范的使用,更好用的动画,更加强大的变化
2. 避免在 getView 中有 重复调用的 findViewByIdfindViewById 的实现是遍历,如果你定义的 View 越复杂代价越大。Google 推荐的做法是用 ViewHolder,然后保存在 view 的 tag 中。现在 RecyclerView 也是强制使用 ViewHolder 了。
3. 设置 View (如 TextView#setText )之前先对比数据是否有改变一般来说,【比较两个数据的代价】远小于【 View 的重绘的代价】
4. 避免在 getView 函数中直接加载 Image 或做其他比较耗时的操作加载本地 Image 需要载入内存以及解析 Bitmap ,都是比较耗时的操作。用户快速滑动列表时,会大量调用 getView ,而 getView 是在主线程中被调用的。如果你在 getView 函数中直接加载 Image 或做其他耗时操作,就会造成滑动比较卡。加载 ImageView 的解决方案就是开一个线程去把做这事。有很多第三库可以做这事。
5. ListView 中元素避免半透明半透明绘制需要大量乘法计算,在滑动时不停重绘会造成大量的计算,在比较差的机子上会比较卡。在设计上能不半透明就不不半透明。实在要弄的话我个人是用个比较偷懒的方法,是在滑动的时候把半透明设置成不透明,滑动完再重新设置成半透明。
6. 尽量开启硬件加速硬件加速提升巨大,避免使用一些不支持的函数导致含泪关闭某个地方的硬件加速。当然这一条不只是对 ListView。
7. 用 ListView 威力加强版 -- RecyclerView更多的新武将,更多的姿势,更规范的使用,更好用的动画,更加强大的变化
展开全部
第一种优化就是重用convertView,
第二种优化是ViewHolder的使用
第三种优化是使用分段加载
第四种优化方式是使用分页加载
第二种优化是ViewHolder的使用
第三种优化是使用分段加载
第四种优化方式是使用分页加载
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询