Viewpager中嵌入自定义可缩放view遇到的问题
来源:互联网 发布:linux 复制文件夹内容 编辑:程序博客网 时间:2024/06/05 03:20
1、由于viewpager的每一页都加入一个fragment,对于浏览图片的功能,由于图片数量很大,所以不能使用fragmentpageadapter,否则容易造成内存不足,而是应该采用fragmentstatepageradapter,该pageradapter最多只保存三个fragment,(前后以及当前),使用后会自动销毁,所以占用内存不多,使用于多fragment情况使用,比如图片浏览。
2、由于viewpager自带缓存功能,可以通过setOffscreenPageLimit()来设置缓存的页数,但是最少也会缓存一个,即如果设置为0,效果同设置为1相同,此时如果要实现下面的功能,就比较费事:如果在当前页面对图片进行了缩放,然后移到下一个页面,然后再返回原页面,此时一般需要该页面的图片恢复初始尺寸,但是由于viewpager至少会缓存一个页面,所以前一个页面还在缓存中,因此不会重新生成fragment。因此无法使用onactivitycreated等生命周期函数,重新加载图片。
解决办法:使用pager.setOnPageChangeListener,在public void onPageSelected(final int arg0)中,对当前页面进行进一步操作:比如可以获取当前页面的fragment及其view:
Fragment f = (Fragment) mAdapter.instantiateItem(pager,
arg0);
TouchImageView tv = (TouchImageView) f.getView()
.findViewById(R.id.imageView);
3、一般情况下加载图片的layout会设置一个progressbar,一个imageview:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/black_bg">
<ProgressBar
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
<com.example.myusefuldemo.image.TouchImageView
android:id="@+id/imageView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:contentDescription="@string/imageview_description" />
这样在加载图片时,只显示progressbar,等图片下载完成后显示imageview。
这样就带了一个问题:如果网速较慢,会停留在progressbar较长时间,而此时我们在TouchImageView使用了getParent().requestDisallowInterceptTouchEvent( true);来防止父view获取touch事件,比如viewpager的滑动事件。由于imageview的bitmap尚未生成,所以无法再TouchImageview里调用getParent().requestDisallowInterceptTouchEvent( false );来恢复父view获取事件的功能,所以在progressbar界面,我们只能等待,而不能进行左右滑动。
解决办法:在加载图片前设置imageview的visibility为Gone,这样Imageview就不会获得Touch事件,从而不会调用getParent().requestDisallowInterceptTouchEvent( true);,所以viewpager的滑动效果可以使用。然后图片加载完毕后设置imageview为Visible,正常显示图片。
</FrameLayout>
- Viewpager中嵌入自定义可缩放view遇到的问题
- Viewpager中嵌入自定义可缩放view遇到的问题
- Android 当可缩放的View用ViewPager显示时 左右滑动冲突问题
- 自定义view中遇到的问题--绘制自定义view
- 自定义view遇到的问题
- React-Native自定义view的缩放问题
- ScrollView中嵌入ViewPager,ViewPager的左右滑动冲突问题
- ScrollView中嵌入ViewPager,ViewPager的滑动出现问题
- ScrollView中嵌入ViewPager,ViewPager的滑动出现问题
- 移植自定义View过程中遇到的问题及解决方法
- 安卓自定义绘制View中遇到的问题
- ViewPager使用过程中遇到子View能滑动时的冲突问题
- Android自定义View遇到的问题
- 自定义View遇到的相关问题
- ViewPager+可缩放ImageView的使用
- Android viewpager + 可缩放的imageview
- [Android View] 判断是否点中一个动态可旋转、可缩放、可移动的图片
- android中实现自定义view中图形的缩放
- tcp客户端最大的fd数
- 在线访谈系统解决方案书
- 内联函数的使用
- Linux基于x86运行的硬件基础(1)——寄存器
- Spider Monkey 在Windows下js32.lib编译
- Viewpager中嵌入自定义可缩放view遇到的问题
- MAC 加速
- 摄影师用1200mm镜头拍摄巨型月亮
- 【左偏树+并查集】Monkey King HDU1512
- 运算符重载----日期类
- 《C专家编程》学习笔记2
- smarty section/foreach获取最后一个循环
- mysql alter 语句用法,添加、修改、删除字段等
- last 命令 uptime 命令 top命令 grep命令