作者:awetyjdgtjkt_933 | 来源:互联网 | 2023-09-04 10:31
之前效果
完成效果:
仿微信PhotoView+Viewpager浏览视频,图片,切换下一页前一页恢复原本大小
使用PhotoView+Viewpager浏览图片时,默认情况下上一张图片的状态是不会恢复的,了解的朋友肯定知道是Viewpager的缓存问题,要解决的话重写Viewpager修改缓存数,这样当然可以,但是效果的话,并不是很好,滑动的时候下一页处于黑屏状态,这次给大家分享一个方法,如果有更好的或者意见,欢迎在评论指出
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {&#64;Overridepublic void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}&#64;Overridepublic void onPageSelected(int position) {tvTitle.setText(getString(R.string.picture_preview_image_num,position &#43; 1, images.size()));int childCount&#61;mViewPager.getChildCount();for (int i&#61;0;i<childCount;i&#43;&#43;){View child&#61;mViewPager.getChildAt(i);PhotoView photoView&#61;child.findViewById(R.id.prePhotoView);if (photoView !&#61; null) {PhotoViewAttacher photoViewAttacher&#61; (PhotoViewAttacher) photoView.getIPhotoViewImplementation();photoViewAttacher.setScale(photoViewAttacher.getMinimumScale(), 0f, 0f, true);}}}&#64;Overridepublic void onPageScrollStateChanged(int state) {}});
PhotoView使用
&#xff1a;
引入依赖&#xff1a;implementation &#39;com.github.chrisbanes:PhotoView:1.3.1&#39;build.gradle中加入&#xff1a;allprojects {repositories {jcenter()maven { url "https://jitpack.io" }}
}
添加布局&#xff1a;
<uk.co.senab.photoview.PhotoViewandroid:id&#61;"&#64;&#43;id/photoView"android:layout_width&#61;"180dp"android:layout_height&#61;"140dp"android:background&#61;"#333333"android:layout_marginLeft&#61;"20dp"/>
视频的话我用的是VideoView&#xff0c;代码就不贴出了&#xff0c;大家可根据实际需要进行修改
设置点击事件&#xff1a;
photoView.setOnPhotoTapListener(new PhotoViewAttacher.OnPhotoTapListener() {&#64;Overridepublic void onPhotoTap(View arg0, float arg1, float arg2) {}&#64;Overridepublic void onOutsidePhotoTap() {}});
至于adapter的话,我使用的是Adapter