52、图片缩放库 PhotoView

PhotoView的简介: 这是一个图片查看库,实现图片浏览功能,支持pinch(捏合)手势或者点击放大缩小。支持在ViewPager中翻页浏览图片。 PhotoView 是一款扩展自Android ImageView ,支持通过单点/多点触摸来进行图片缩放的智能控件。功能实用和强大。

PhotoView的功能: 图片浏览查看 双指缩放 单点触摸缩放 图片缩放模式设置。

Android PhotoView 的用法:

导入 photoview-library-1.2.2.jar 包,布局XML里设置PhotoView 将ImageView传入PhotoViewAttacher。

代码演示: 使用 PhotoView进行网络图片和本地图片的加载,缩放和点击事件处理。

【注】universal-image-loader-1.9.2_sources.jar  是加载网络图片的JAR包。

1 <uk.co.senab.photoview.PhotoView
2         android:id="@+id/iv_photo"
3         android:layout_width="fill_parent"
4         android:layout_height="wrap_content" />
 1  import android.app.Activity;
 2 import android.os.Bundle;
 3 import android.view.View;
 4 
 5 //PhotoView控件
 6 import uk.co.senab.photoview.PhotoView;
 7 import uk.co.senab.photoview.PhotoViewAttacher;
 8 import uk.co.senab.photoview.PhotoViewAttacher.OnPhotoTapListener;
 9 
10 // 加载网络图片库
11 import com.nostra13.universalimageloader.core.ImageLoader;
12 
13 /**
14  * 加载网络图片和本地图片16  * PhotoView进行缩放处理
17  */
18 public class MainActivity extends Activity {
19     private PhotoView iv_photo;
20     private PhotoViewAttacher attacher;
21     private ImageLoader loader;
22 
23     @Override
24     protected void onCreate(Bundle savedInstanceState) {
25         super.onCreate(savedInstanceState);
26         
27         setContentView(R.layout.activity_main);
28         
29         iv_photo = (PhotoView) findViewById(R.id.iv_photo);
30         attacher = new PhotoViewAttacher(iv_photo);
31         // 加载本地图片,缩放处理
32         // try {
33         // InputStream is = getAssets().open("photoview.jpg");
34         // Bitmap bm = BitmapFactory.decodeStream(is);
35         // iv_photo.setImageBitmap(bm);
36         // } catch (IOException e) {
37         // // TODO Auto-generated catch block
38         // e.printStackTrace();
39         // }
40         // 加载网络图片
41         loader = ImageLoader.getInstance();
42         loader.displayImage("https://www.baidu.com/img/bdlogo.png", iv_photo);
43         // 点击事件
44         iv_photo.setOnPhotoTapListener(new OnPhotoTapListener() {
45             @Override
46             public void onPhotoTap(View arg0, float arg1, float arg2) {
47 
48             }
49         });
50     }
51 
52 }
 1  import java.io.File;
 2 import android.app.Application;
 3 import android.content.Context;
 4 
 5 import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache;
 6 import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
 7 import com.nostra13.universalimageloader.cache.memory.impl.WeakMemoryCache;
 8 import com.nostra13.universalimageloader.core.ImageLoader;
 9 import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
10 import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
11 import com.nostra13.universalimageloader.utils.StorageUtils;
12 
13 public class BaseApplication extends Application {
15     @Override
16     public void onCreate() {
17         super.onCreate();
18         initImagloader(getApplicationContext());
19     }
20 
21     private void initImagloader(Context context) {
22         // 获取到缓存的目录地址
23         File cacheDir = StorageUtils.getOwnCacheDirectory(context,
24                 "photoview/Cache");
25         // 创建配置ImageLoader(所有的选项都是可选的,只使用那些你真的想定制)
26         // 这个可以设定在APPLACATION里面,设置为全局的配置参数
27         ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
28                 // 线程池内加载的数量
29                 .threadPoolSize(3).threadPriority(Thread.NORM_PRIORITY - 2)
30                 .memoryCache(new WeakMemoryCache())
31                 .denyCacheImageMultipleSizesInMemory()
32                 .discCacheFileNameGenerator(new Md5FileNameGenerator())
33                 // 将保存的时候的URI名称用MD5 加密
34                 .tasksProcessingOrder(QueueProcessingType.LIFO)
35                 .discCache(new UnlimitedDiscCache(cacheDir))// 自定义缓存路径
36                 // .defaultDisplayImageOptions(DisplayImageOptions.createSimple())
37                 .writeDebugLogs() // Remove for release app
38                 .build();
39         // Initialize ImageLoader with configuration.
40         // 全局初始化此配置
41         ImageLoader.getInstance().init(config);
42     }
43 }
 1 <application
 2         android:name="com.jike.photoviewdemo.BaseApplication"
 3        。。。>
 7         。。。。。
16 </application>
<uses-permission android:name="android.permission.INTERNET"/>

下载地址:http://download.csdn.net/detail/androidsj/9278845

原文地址:https://www.cnblogs.com/androidsj/p/4973677.html