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