ViewPager内卡顿
来源:互联网 发布:gta5捏脸数据御姐 编辑:程序博客网 时间:2024/06/05 01:15
情景
1、ViewPager丢失监听事件
2、从其他页面切换到含有ViewPager的页面卡顿
解决
一、ViewPager丢失监听事件
项目中实际情况:从其他View跳转到ViewPager,丢失一次ViewPager监听事件。
原因分析:ViewPager内有个mFirstLayout参数,
解决方式:给ViewPager添加 监听
viewPager.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() { @Override public void onViewAttachedToWindow(View v) { v.requestLayout(); } @Override public void onViewDetachedFromWindow(View v) { } });重新请求 layout就可以解决,这个BUG只发现在华为手机上有。
二、从其他页面切换到含有ViewPager的页面卡顿
项目实际情况:项目中ViewPager 内View 形式为 ScrollView 嵌套 ExpandableListView。
卡顿原因分析:
1、ViewPager 重新请求布局
2、ViewPager 缓存
3、ExpandableListView getGruopView 和 getChildView 耗时
1 和 2都不是主要问题。
解决办法:
1、ViewPager 切换到其他View 时,将ViewPager 内 各page setVisiable GONE
2、对ExpandableList,在ViewPager切换出去时,记录group的展开或折叠状态。
3、记录 scrollView 的 Y值
4、在其他View 切换到ViewPager时,通过 handler,执行-- 恢复ExpandableListView状态 -- 恢复 scrollView Y轴 -- 当前 page setVisiable Visiable
显示结果:其他View进入Viewpager,先显示空白,再显示具体内容。解决了切换到ViewPager时的卡顿问题。
总结:主要思路
1、ExpandableListView,如果折叠,这时候就不会执行 getChildView 省时。
2、Pager 执行 GONE 的主要意义在于 不要让用户看到 折叠 -- 展开 -- scrollTo Y的动作。一切动作做完后,在Visiable
阅读全文
1 0
- ViewPager内卡顿
- Viewpager
- ViewPager
- ViewPager
- ViewPager
- ViewPager
- ViewPager
- viewpager
- ViewPager
- ViewPager
- ViewPager
- Viewpager
- viewpager
- ViewPager
- ViewPager
- ViewPager
- viewpager
- ViewPager
- Linux设备树-未完成
- 两行命令搞定数据库变数据框
- 欢迎使用CSDN-markdown编辑器
- java volatile 线程间的变量可见性
- HDU-6184 (无向图三元环计数)
- ViewPager内卡顿
- HDU5858-Hard problem
- 我是如何自学成为程序员的
- 通过递归实现嵌套未知次数的循环
- 人脸识别之特征脸方法
- 位运算---只使用位运算实现整数的加减乘除
- CSS Hack技术解决多浏览器兼容问题
- 灰色预测模型GM(1,1) 与例题分析
- The application may be doing too much work on its main thread.