首先是效果图

可以放大、缩小、旋转
布局文件结构
- RelativeLayout
- ViewPager
- TextView
相对布局中包含ViewPager和底部页码标识
定义适配器,以下是关键代码,加载图片
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, final int position) {
final PhotoView photoView = new PhotoView(activity);
//开启图片缩放功能
photoView.enable();
//设置缩放级别
photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
//设置最大缩放倍数
photoView.setMaxScale(2.5f);
//参数设置
RequestOptions requestOptions = new RequestOptions()
.placeholder(R.drawable.loading)
.error(R.drawable.image_error);
//加载图片
Glide.with(activity)
.load(imageList.get(position))
.apply(requestOptions)
.into(photoView);
//点击事件,返回
photoView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
photoView.disenable();
activity.finish();
}
});
//双击事件
photoView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
if(imageLongClick != null){
imageLongClick.longClickImage(position);
}
return true;
}
});
container.addView(photoView);
return photoView;
}
设置Activity全屏
//全屏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
更新底部数字索引
imageBrowserViewPager.addOnPageChangeListener (new ViewPager.OnPageChangeListener () {
@Override
public void onPageScrolled (int position, float positionOffset, int positionOffsetPixels) {
currentIndex = position;
updateBottomIndex(position + 1);
}
@Override
public void onPageSelected (int position) {
updateBottomIndex(position + 1);
}
@Override
public void onPageScrollStateChanged (int state) {
}
});
在onCreate和onFinish中添加fadein和fadeout动画
overridePendingTransition(R.anim.fade_in,R.anim.fade_out);
overridePendingTransition(R.anim.fade_in_disappear,R.anim.fade_out_disappear);
项目源地址为 [github.com/lxj-hellowo…]