PhotoView

一、PhotoView的作用

PhotoView是继承ImageView的自定义控件,支持双击或者双指缩放。不仅支持单个的ImageView,同时也能与ViewPager、ScollView等父控件很好的兼容,亦能与ImageLoader、Picasso等异步加载网路图片的框架很好的兼容。

二、使用

PhotoView的使用其实很简单,其关键点就是处理Touch事件和Matrix图形变换。

1.单张图片的图形变换

要想处理图片的图形变换,首先要获取PhotoViewAttacher对象。

  1. PhotoViewAttacher mAttacher = new PhotoViewAttacher(photoView);

photoView为findViewById获取到的PhotoView控件或者代码创建的PhotoView对象,也可以是ImageView。

(1)设置图片能双击或者双指缩放

  1. mAttacher.setZoomable(!mAttacher.canZoom());

(2)设置图片在控件中显示的样式

  1. mAttacher.setScaleType(ScaleType.CENTER_INSIDE);

与ImageView所支持的样式相同。

(3)设置图片点击(单击)后的事件,点击图片外的空白处无效。

  1. mAttacher.setOnPhotoTapListener(new OnPhotoTapListener() {
  2. @Override
  3. public void onPhotoTap(View arg0, float arg1, float arg2) {
  4. getActivity().finish();
  5. }
  6. });

一般用ViewPager展示一组图片,点击某一张图片之后,可以查看占满屏幕的图片。其实是将ViewPager的点击事件设置为跳转到另外一个Activity中。该Activity中可以使用单个的ImageView(PhotoView),或者用ViewPager+ImageView(PhotoView)实现所有图片的预览。设置该监听之后,用户点击图片,销毁当前Activity,即可实现图片预览效果。

2、图片的旋转

photo必须为PhotoView的实例。

(1)设置图片旋转多少度

  1. photo.setRotationBy(10);

参数是指图片旋转的角度。与Handler搭配使用即可实现图片的旋转动画。

(2)设置图片旋转到哪个角度

  1. photo.setRotationTo(0);

参数是指图片旋转到的角度。

3、与ViewPager搭配使用

一般使用ViewPager和PhotoView搭配使用时,都会自定义ViewPager,对ViewPager的拦截事件或者点击事件进行处理。

  1. public class HackyViewPager extends ViewPager {
  2. private boolean isLocked;//是否锁定ViewPager
  3. public HackyViewPager(Context context) {
  4. super(context);
  5. isLocked = false;
  6. }
  7. public HackyViewPager(Context context, AttributeSet attrs) {
  8. super(context, attrs);
  9. isLocked = false;
  10. }
  11. @Override
  12. public boolean onInterceptTouchEvent(MotionEvent ev) {
  13. if (!isLocked) {
  14. try {
  15. return super.onInterceptTouchEvent(ev);
  16. } catch (IllegalArgumentException e) {
  17. e.printStackTrace();
  18. return false;
  19. }
  20. }
  21. return false;
  22. }
  23. @Override
  24. public boolean onTouchEvent(MotionEvent event) {
  25. return !isLocked && super.onTouchEvent(event);
  26. }
  27. public void toggleLock() {
  28. isLocked = !isLocked;
  29. }
  30. public void setLocked(boolean isLocked) {
  31. this.isLocked = isLocked;
  32. }
  33. public boolean isLocked() {
  34. return isLocked;
  35. }
  36. }

自定义一个类继承PagerAdapter,在该类中的instantiateItem的方法中返回PhotoView的实例或者包含PhotoView的布局填充的View对象,然后将该类的实例设置给ViewPager作为适配器。

4、与网络图片加载框架继承

与ImageView的使用方法一样,直接将对象作为参数传入即可。

如果使用了三个参数的方法,需要在onLoadingComplete方法中调用mAttacher.update()方法。

  1. ImageLoader.getInstance().displayImage(mImageUrl, mImageView, new SimpleImageLoadingListener() {
  2. @Override
  3. public void onLoadingStarted(String imageUri, View view) {
  4. }
  5. @Override
  6. public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
  7. }
  8. @Override
  9. public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
  10. mAttacher.update();
  11. }
  12. });

来自为知笔记(Wiz)

时间: 2024-10-13 16:06:22

PhotoView的相关文章

photoview图片显示

1jar包http://download.csdn.net/detail/taoolee/9440794 2类结构 3效果 4类文件 public class SimpleSampleActivity extends Activity { static final String PHOTO_TAP_TOAST_STRING = "Photo Tap! X: %.2f %% Y:%.2f %% ID: %d"; static final String SCALE_TOAST_STRING

PhotoView开源项目剖析

http://blog.csdn.net/wu928320442/article/details/43056731 介绍 上一节呢,我们介绍了怎么下载和编译Android源码,这节呢,我们来讨论PhotoView这个开源项目,也是我们用的非常频繁的一个,用来帮助产生一个容易实现ImageView缩放的这么个东东. 功能特性 支持放缩超出边界,多点触控和双击事件 滚动和滑动 和ViewPager等能完美兼容 矩阵变化等有回调,方便前台其他展示的改变 单击,长按都有回调提醒 源码剖析 那么怎么来学习

Android开源库--PhotoView图片查看

如果说我比别人看得更远些,那是因为我站在了巨人的肩上. github地址:https://github.com/chrisbanes/PhotoView 介绍 在一般的应用中,总会遇到查看图片的功能,点击图片之后,详细查看,PhotoView这个开源控件就帮我们很好的完成了这个功能. 它继承自ImageView,支持缩放,以及各种手势的监听. 特性 通过多点触摸和双击来进行放大. 通过轻弹划实现平滑滚动. 在带有滚动功能的父类工作的很好(比如ViewPager) 允许当显示的矩阵发生发生改变时通

图片放大缩小(和ViewPager配合使用流畅显示)--第三方开源--PhotoView

图片的放大缩小实现效果是使用的github上的一个开源项目photoView实现的,下载地址:https://github.com/chrisbanes/PhotoView 下面看测试代码: activity_main.xml: 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/too

android photoview 图片放大缩放功能 ImageView

android 图片浏览功能  图片放大缩小 使用 photoview 双击或双指缩放的ImageView 使用多点触控和双击. 滚动,以平滑滚动甩. 实际效果参考 图片来自 : http://a.code4app.com/android/PhotoView/5241a4026803fa1327000000 下载完成后 导入IDE里面 将lib  添加进来 贴出 photoview的代码: /****************************************************

Android PhotoView基本功能实现

Android开发过程中,想必都使用过PhotoView来实现图片展示的功能.在最新版的sdk(android-23)有了一个原生的photoView,并且代码实现也很简单,逻辑也很清晰.我们在实际的工作中,遇到的需求可能与这些photoview现有功能有些细微的差别,需要修改,或者重新开发.本文简单介绍下android-23中photoview涉及到的相关技术,相信读者看完后会发现,其实很简单.以下为实现思路和步骤 1 自定义一个View 通过自定义视图,继承View,为外界提过public接

【Android接口实现】PhotoView——单点支持/多图像缩放,实现了触摸

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 今天给大家介绍的开源项目,是来自Github的PhotoView项目,这个项目的主要功能是实现普通的ImageView控件的图片的放缩,触摸方式包含单点触摸.多点触摸. PhotoVIew的github项目地址:https://github.com/chrisbanes/PhotoView 測试项目的文件夹结构 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvem

ViewPager——之PhotoView

好久没更新了,最近在研究图库,今天来研究一个功能:图片预览时能放缩,并且可以左右滚动预览多个图片. 实现这个功能要注意两点: 1.放缩图片,对单张图片实现放缩功能,这里实现用多点触控实现放缩,左右上下滑动对放大的图片实现预览,并且能还原到原来尺寸.这里使用photoview这个开源框架控件. https://codeload.github.com/chrisbanes/PhotoView/zip/master 2.viewpager滑动,这里需要继承viewpager,然后需要对viewpage

52、图片缩放库 PhotoView

PhotoView的简介: 这是一个图片查看库,实现图片浏览功能,支持pinch(捏合)手势或者点击放大缩小.支持在ViewPager中翻页浏览图片. PhotoView 是一款扩展自Android ImageView ,支持通过单点/多点触摸来进行图片缩放的智能控件.功能实用和强大. PhotoView的功能: 图片浏览查看 双指缩放 单点触摸缩放 图片缩放模式设置. Android PhotoView 的用法: 导入 photoview-library-1.2.2.jar 包,布局XML里设