ViewPager——之PhotoView
好久没更新了,最近在研究图库,今天来研究一个功能:图片预览时能放缩,并且可以左右滚动预览多个图片。
实现这个功能要注意两点:
1、放缩图片,对单张图片实现放缩功能,这里实现用多点触控实现放缩,左右上下滑动对放大的图片实现预览,并且能还原到原来尺寸。这里使用photoview这个开源框架控件。
https://codeload.github.com/chrisbanes/PhotoView/zip/master
2、viewpager滑动,这里需要继承viewpager,然后需要对viewpager触摸事件拦截:
@OverridepublicbooleanonInterceptTouchEvent(MotionEventev){try{if(((ViewPagerActivity)mCtx).getCurrentPageStatus()){returnsuper.onInterceptTouchEvent(ev);}else{returnfalse;}}catch(IllegalArgumentExceptione){e.printStackTrace();returnfalse;}}
这里需要捕获异常,否则索引溢出,其次要加个限制在图片还原到之前尺寸大小就可以实现滑动,不冲突触摸滑动事件。
publicbooleangetCurrentPageStatus(){//获取当前展示viewPhotoViewpv=(PhotoView)mViewPager.findViewById(mCurrentPager);if(pv.getScale()==1.0f){returntrue;}else{returnfalse;}}staticclassSamplePagerAdapterextendsPagerAdapter{privatestaticint[]sDrawables={R.drawable.wallpaper,R.drawable.wallpaper,R.drawable.wallpaper,R.drawable.wallpaper,R.drawable.wallpaper,R.drawable.wallpaper};@OverridepublicintgetCount(){returnsDrawables.length;}@OverridepublicViewinstantiateItem(ViewGroupcontainer,intposition){PhotoViewphotoView=newPhotoView(container.getContext());photoView.setImageResource(sDrawables[position]);//给view做标记photoView.setId(position);//NowjustaddPhotoViewtoViewPagerandreturnitcontainer.addView(photoView,LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);returnphotoView;}@OverridepublicvoiddestroyItem(ViewGroupcontainer,intposition,Objectobject){container.removeView((View)object);}@OverridepublicbooleanisViewFromObject(Viewview,Objectobject){returnview==object;}}
这样基本就能实现图库展示图片功能。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。