1.介绍以及引入
PhotoView 是一款扩展自Android ImageView,支持通过单点/多点触摸来进行图片缩放的智能控件。
特性:
支持单点/多点触摸,即时缩放图片;
支持平滑滚动;
在滑动父控件下能够运行良好;(例如:ViewPager)
当用户的触点改变是可以触发通知
在build.gradle的dependencies中加入:
compile 'com.github.chrisbanes:PhotoView:1.2.6'
接着在build.gradle中:
repositories {
jcenter()
maven { url "https://jitpack.io" }
}
2.使用
这里使用了它的旋转,指定位置,自动旋转功能
布局:
<uk.co.senab.photoview.PhotoView
android:id="@+id/photo_view"
android:layout_above="@+id/ll_btn_container"
android:layout_centerInParent="true"
android:src="@drawable/wallpaper"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
在代码中,找到该控件后,
旋转:
(顺时针选择10度)
mPhotoView.setRotationBy(10);
(逆时针选择10度)
mPhotoView.setRotationBy(-10);
这个度数可以由自己指定,这个方法不停地调用可以叠加度数,例如调用一次旋转10度,调用两次就是旋转20度
指定旋转度数:
mPhotoView.setRotationTo(0);
0的话会让图片回到最初的位置
自动旋转:
调用自己写的方法:
toggleRotation()
具体的方法:
private final Handler handler = new Handler();
private boolean rotating = false;
private void toggleRotation() {
if (rotating) {
handler.removeCallbacksAndMessages(null);
} else {
rotateLoop();
}
rotating = !rotating;
}
private void rotateLoop() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
mPhotoView.setRotationBy(1);
rotateLoop();
}
}, 15);
}
官方Demo里还有很多功能,有兴趣的可以去看看:
https://github.com/chrisbanes/PhotoView
从这里下载它的Demo