首先添加依赖
compile 'com.github.chrisbanes:PhotoView:1.2.6'
如果依赖文件加载失败就修改gradle
allprojects {
repositories {
maven { url "https://jitpack.io" }
jcenter()
}
}
如果从出现以下报错
Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
就用exclude去除依赖中多余的部分
compile ('com.github.chrisbanes:PhotoView:1.2.6'){
exclude module:
'support-v4'
exclude group:
'com.android.support'}
添加成功之后,像Imageview一样去建一个布局
<uk.co.senab.photoview.PhotoView
android:id="@+id/iv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg"
/>
布局怎么样就看自己的喜好了
然后去Activity中注解
private PhotoView iv;
private PhotoViewAttacher ivAttacher;
iv=(PhotoView)findViewById(R.id.iv);
ivAttacher= new PhotoViewAttacher(iv);
和Imageview不一样的地方是,多了一个attacher来管理photoview
可以通过它来添加点击监听器
ivAttacher.setOnPhotoTapListener(new PhotoViewAttacher.OnPhotoTapListener(){
@Override
public void onPhotoTap(View view, float v, float v1) {
// if(pictureUrl.size()>currentPicture){
// Glide.with(ShowActivity.this).load(pictureUrl.get(currentPicture++)).asBitmap().into(iv);
// Log.w("phototap","加载完毕");
}
}
@Override
public void onOutsidePhotoTap() {
// Log.w("phototap","ouside");
}
});
或者是一个长按的监听器
ivAttacher.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(final View view) {
Log.w("longclick","长按事件");
// Dialog dialog = new AlertDialog.Builder(ShowActivity.this).setTitle("保存?").setMessage("是否确认保存?").
// setPositiveButton("确认", new DialogInterface.OnClickListener()
// {
// public void onClick(DialogInterface dialog, int whichButton)
// {
// savePicture(view);
// dialog.cancel();
// }
// }).create();
// dialog.show();
return true;
}
});
可以设置是否允许放大
ivAttacher.setZoomable(true);