zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Nginx之——日志按日期分割的实现(基于CentOS操作系统)
    git忽略已加入到版本库的文件
    Linux系统下查看已经登录用户并踢出的方法
    nginx代理后,获取request的ip
    Spring Aop 修改目标方法参数和返回值
    nginx防止DDOS攻击配置
    SQL Server 合并复制遇到identity range check报错的解决
    SQL Saturday 北京将于7月25日举办线下活动,欢迎参加
    T-SQL检查停止的复制作业代理,并启动
    揭开SQL注入的神秘面纱PPT分享
  • 原文地址:https://www.cnblogs.com/androidsj/p/4973677.html
Copyright © 2011-2022 走看看