仿微信PhotoView+Viewpager浏览视频,图片,切换下一页前一页恢复原本大小

简介: 仿微信PhotoView+Viewpager浏览视频,图片,切换下一页前一页恢复原本大小

之前效果9.gif

完成效果:


image.png仿微信PhotoView+Viewpager浏览视频,图片,切换下一页前一页恢复原本大小


使用PhotoView+Viewpager浏览图片时,默认情况下上一张图片的状态是不会恢复的,了解的朋友肯定知道是Viewpager的缓存问题,要解决的话重写Viewpager修改缓存数,这样当然可以,但是效果的话,并不是很好,滑动的时候下一页处于黑屏状态,这次给大家分享一个方法,如果有更好的或者意见,欢迎在评论指出

 viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
           @Override
           public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
           }
           @Override
           public void onPageSelected(int position) {
               tvTitle.setText(getString(R.string.picture_preview_image_num,
                       position + 1, images.size()));
             //获取子页面数量
               int childCount=mViewPager.getChildCount();
               for (int i=0;i<childCount;i++){
             //获取当前页面的view
                   View child=mViewPager.getChildAt(i);
             //获取当前页面中的PhotoView 
            PhotoView photoView=child.findViewById(R.id.prePhotoView);
                   if (photoView != null) {
             //获取photoView创建的PhotoViewAttacher
                       PhotoViewAttacher photoViewAttacher= (PhotoViewAttacher) photoView.getIPhotoViewImplementation();
              //通过photoViewAttacher设置缩放大小
             //第一个参数是获取photoViewAttacher自带的缩放大小最小值,第二个和第三个参数设置缩放中心
                       photoViewAttacher.setScale(photoViewAttacher.getMinimumScale(), 0f, 0f, true);
                   }
               }
           }
           @Override
           public void onPageScrollStateChanged(int state) {
           }
       });

PhotoView使用

引入依赖:
implementation 'com.github.chrisbanes:PhotoView:1.3.1'
build.gradle中加入:
allprojects {
    repositories {
        jcenter()
        maven { url "https://jitpack.io" }
    }
}

添加布局:

<uk.co.senab.photoview.PhotoView
  android:id="@+id/photoView"
  android:layout_width="180dp"
  android:layout_height="140dp"
  android:background="#333333"
  android:layout_marginLeft="20dp"
  />

视频的话我用的是VideoView,代码就不贴出了,大家可根据实际需要进行修改

设置点击事件:

          photoView.setOnPhotoTapListener(new PhotoViewAttacher.OnPhotoTapListener() {
                @Override
                public void onPhotoTap(View arg0, float arg1, float arg2) {
                }
                @Override
                public void onOutsidePhotoTap() {
                }
            });

至于adapter的话,我使用的是Adapter


目录
相关文章
|
6月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的停车场微信小程序附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的停车场微信小程序附带文章和源代码部署视频讲解等
54 6
|
6月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的宠物医院微信小程序附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的宠物医院微信小程序附带文章和源代码部署视频讲解等
67 3
|
5月前
|
小程序 开发者
【微信小程序-原生开发】实用教程05-首页(含自定义调试模式、插入图片、图文排版、底部留白、添加本地图片)
【微信小程序-原生开发】实用教程05-首页(含自定义调试模式、插入图片、图文排版、底部留白、添加本地图片)
61 0
|
2月前
|
小程序 JavaScript API
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
这篇文章介绍了如何在uni-app和微信小程序中实现将图片保存到用户手机相册的功能。
795 0
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
|
2月前
|
算法 小程序 Java
java制作海报三:获取微信二维码详情,并改变大小,合成到海报(另一张图片)上
这篇文章介绍了如何使用Java获取微信小程序的二维码,并将其调整大小后合成到海报(另一张图片)上。
46 0
|
4月前
|
小程序 前端开发
|
5月前
|
小程序 前端开发
【非常全】微信小程序下载图片到相册,微信小程序自动获取分享图片到相册
【非常全】微信小程序下载图片到相册,微信小程序自动获取分享图片到相册
316 3
|
5月前
|
前端开发 小程序
【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)
【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)
420 0
|
6月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的“狮子狗”二手交易微信小程序附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的“狮子狗”二手交易微信小程序附带文章和源代码部署视频讲解等
53 7
|
6月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的校园导航微信小程序附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的校园导航微信小程序附带文章和源代码部署视频讲解等
59 6