Android中第三方控件PhotoView的基本使用

来源:互联网 发布:c语言temp代表什么 编辑:程序博客网 时间:2024/06/16 10:17
PhotoView的简介:
这是一个图片查看库,实现图片浏览功能,支持pinch(捏合)手势或者点击放大缩小。支持在ViewPager中翻页浏览图片。

PhotoView 是一款扩展自Android ImageView ,支持通过单点/多点触摸来进行图片缩放的智能控件。功能实用和强大。

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

基本用法:
导入jar包,布局XML里设置PhotoView
将ImageView传入PhotoViewAttacher
代码演示:
使用 PhotoView进行网络图片和本地图片的加载,缩放和点击事件处理

布局文件中:

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. <span style="background-color: rgb(255, 255, 255);"><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     tools:context=".MainActivity"  
  6.     android:orientation="vertical"  
  7.      >  
  8.   
  9.       <uk.co.senab.photoview.PhotoView  
  10.         android:id="@+id/iv_photo1"  
  11.         android:layout_width="match_parent"  
  12.         android:layout_height="wrap_content"        
  13.          
  14.          />  
  15.         <uk.co.senab.photoview.PhotoView  
  16.         android:id="@+id/iv_photo2"  
  17.         android:layout_width="match_parent"  
  18.         android:layout_height="wrap_content"        
  19.        
  20.          />  
  21.   
  22. </LinearLayout></span>  

MainActivity中:

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. public class MainActivity extends Activity {  
  2.     private PhotoView iv_photo1;  
  3.     private PhotoView iv_photo2;  
  4.   
  5.   
  6.     @Override  
  7.     protected void onCreate(Bundle savedInstanceState) {  
  8.         super.onCreate(savedInstanceState);  
  9.         setContentView(R.layout.activity_main);  
  10.         iv_photo1 = (PhotoView) findViewById(R.id.iv_photo1);  
  11.         iv_photo2 = (PhotoView) findViewById(R.id.iv_photo2);  
  12. //      localImage();  
  13.         netImage();  
  14.           
  15.     }  
  16.   
  17. /**  
  18.  * 加载本地图片   
  19.  *  
  20.  */  
  21.     private void localImage() {  
  22. //       加载本地图片,缩放处理  
  23.          try {  
  24. //       图片在asset目录中       
  25.          InputStream is = getAssets().open("photo2.jpg");  
  26.          Bitmap bm = BitmapFactory.decodeStream(is);  
  27.          iv_photo1.setImageBitmap(bm);  
  28.          } catch (IOException e) {  
  29.          e.printStackTrace();  
  30.          }  
  31.           
  32.     }  
  33.     /** 
  34.      * 加载网络图片 
  35.      */  
  36.     private void netImage() {  
  37.         ImageLoader loader = ImageLoader.getInstance();  
  38.         loader.displayImage("https://www.baidu.com/img/bdlogo.png", iv_photo2);  
  39.         iv_photo2.setOnPhotoTapListener(new OnPhotoTapListener() {  
  40.               
  41.             @Override  
  42.             public void onPhotoTap(View arg0, float arg1, float arg2) {  
  43.                 Toast.makeText(MainActivity.this"图片被点击了"10).show();  
  44.             }  
  45.         });  
  46.           
  47.     }  
  48.       
  49.   
  50.       
  51. }  
BaseApplication中:

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. /** 
  2.  * 加载网络图片时,需要对ImageLoader进行全局配置 
  3.  * 
  4.  */  
  5.   
  6. public class BaseApplication extends Application {  
  7.   
  8.     @Override  
  9.     public void onCreate() {  
  10.         super.onCreate();  
  11.         initImagloader(getApplicationContext());  
  12.     }  
  13.   
  14.     private void initImagloader(Context context) {  
  15.         File cacheDir = StorageUtils.getOwnCacheDirectory(context,  
  16.                 "photoview/Cache");// 获取到缓存的目录地址  
  17.         // 创建配置ImageLoader(所有的选项都是可选的,只使用那些你真的想定制),这个可以设定在APPLACATION里面,设置为全局的配置参数  
  18.         ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(  
  19.                 context)  
  20.                 // 线程池内加载的数量  
  21.                 .threadPoolSize(3).threadPriority(Thread.NORM_PRIORITY - 2)  
  22.                 .memoryCache(new WeakMemoryCache())  
  23.                 .denyCacheImageMultipleSizesInMemory()  
  24.                 .discCacheFileNameGenerator(new Md5FileNameGenerator())  
  25.                 // 将保存的时候的URI名称用MD5 加密  
  26.                 .tasksProcessingOrder(QueueProcessingType.LIFO)  
  27.                 .discCache(new UnlimitedDiscCache(cacheDir))// 自定义缓存路径  
  28.                 // .defaultDisplayImageOptions(DisplayImageOptions.createSimple())  
  29.                 .writeDebugLogs() // Remove for release app  
  30.                 .build();  
  31.         // Initialize ImageLoader with configuration.  
  32.         ImageLoader.getInstance().init(config);// 全局初始化此配置  
  33.     }  
  34. }  
主清单配置文件中:

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. <uses-permission android:name="android.permission.INTERNET"/>  
  2.    <application  
  3.        android:name="com.zhhandroid.BaseApplication"  
  4.        android:allowBackup="true"  
  5.        android:icon="@drawable/ic_launcher"  
  6.        android:label="@string/app_name"  
  7.        android:theme="@style/AppTheme" >  
  8.        <activity  
  9.            android:name=".MainActivity"  
  10.            android:label="@string/app_name" >  
  11.            <intent-filter>  
  12.                <action android:name="android.intent.action.MAIN" />  
  13.   
  14.                <category android:name="android.intent.category.LAUNCHER" />  
  15.            </intent-filter>  
  16.        </activity>  
  17.    </application>  

效果:


需要导入的jar包:

photoview-library-1.2.2.jar

universal-image-loader-1.9.2_sources.jar

效果展示:


jar包及源码下载:

http://download.csdn.net/detail/zhaihaohao1/9432820

0 0