Jaqen's Blog

Android 图片预览库封装

字数统计: 268阅读时长: 1 min
2019/05/07 Share

基于 PhotoView,增加手势旋转、拖动退出预览功能。

GitHub:PhotoViewEx

依赖

在项目 build.gradle 中添加依赖

1
2
3
4
5
allprojects {
repositories {
maven { url "https://jitpack.io" }
}
}

module 的 build.gradle 中添加依赖

1
2
3
dependencies {
implementation 'com.github.zywudev:PhotoViewEx:1.0.0'
}

使用方法

使用下面的方式即可实现缩放、双指旋转功能。

1
2
3
4
<com.wuzy.photoviewex.PhotoView
android:id="@+id/iv_photo"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
1
2
PhotoView photoView = (PhotoView) findViewById(R.id.iv_photo);
photoView.setImageResource(R.drawable.image);

拖动关闭使用方法

1、Activity 主题设为透明

1
<item name="android:windowIsTranslucent">true</item>

2、初始化

1
DragCloseHelper mDragCloseHelper = new DragCloseHelper(this);

3、设置需要拖拽的 View 以及背景 ViewGroup

1
mDragCloseHelper.setDragCloseViews(mConstraintLayout,mPhotoView);

4、设置监听

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
mDragCloseHelper.setOnDragCloseListener(new OnDragCloseListener() {
@Override
public void onDragBegin() {

}

@Override
public void onDragging(float percent) {

}

@Override
public void onDragEnd(boolean isShareElementMode) {
if (isShareElementMode) {
onBackPressed();
}
}

@Override
public void onDragCancel() {

}

@Override
public boolean intercept() {
// 默认false
return false;
}
});

5、处理 Touch 事件

1
2
3
4
5
6
7
8
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (mDragCloseHelper.handleEvent(ev)) {
return true;
} else {
return super.dispatchTouchEvent(ev);
}
}

更多使用方法参见 sample

参考