项目地址:https://github.com/chrisbanes/PhotoView

  用开源项目有个好处,一是实现简单,二是bug少。那么我们就来说下这个项目能够实现的效果:

1.单个图片的双指缩放,双击放大缩小

PhotoViewAttacher mAttacher;ImageView mImageView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// Any implementation of ImageView can be used!mImageView = (ImageView) findViewById(R.id.iv_photo);// Set the Drawable displayedDrawable bitmap = getResources().getDrawable(R.drawable.ic_launcher);mImageView.setImageDrawable(bitmap);// Attach a PhotoViewAttacher, which takes care of all of the zooming// functionality.mAttacher = new PhotoViewAttacher(mImageView);

2.图片的旋转效果,可以精准指定旋转的度数

    private PhotoView photo;private final Handler handler = new Handler();private boolean rotating = false;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);photo = new PhotoView(this);photo.setImageResource(R.drawable.wallpaper);setContentView(photo);photo.setRotationBy(10);}    

3.放入viewpager来做照片浏览,浏览中可以放大和缩小(这里的viewpager可以设置是否允许左右滑动,如果不用这功能,就直接用普通的viewpager)

private static final String ISLOCKED_ARG = "isLocked";private ViewPager mViewPager;private MenuItem menuLockItem;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_view_pager);mViewPager = (HackyViewPager) findViewById(R.id.view_pager);setContentView(mViewPager);mViewPager.setAdapter(new SamplePagerAdapter());if (savedInstanceState != null) {boolean isLocked = savedInstanceState.getBoolean(ISLOCKED_ARG, false);((HackyViewPager) mViewPager).setLocked(isLocked);}}static class SamplePagerAdapter extends PagerAdapter {private static final int[] sDrawables = { R.drawable.wallpaper, R.drawable.wallpaper, R.drawable.wallpaper,R.drawable.wallpaper, R.drawable.wallpaper, R.drawable.wallpaper };@Overridepublic int getCount() {return sDrawables.length;}@Overridepublic View instantiateItem(ViewGroup container, int position) {//定义可以缩放的图片对象 PhotoView photoView = new PhotoView(container.getContext());photoView.setImageResource(sDrawables[position]);// Now just add PhotoView to ViewPager and return itcontainer.addView(photoView, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);return photoView;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView((View) object);}@Overridepublic boolean isViewFromObject(View view, Object object) {return view == object;}}

这是官方文档的例子

ImageView mImageView;
PhotoViewAttacher mAttacher;@Override
public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// Any implementation of ImageView can be used!mImageView = (ImageView) findViewById(R.id.iv_photo);// Set the Drawable displayedDrawable bitmap = getResources().getDrawable(R.drawable.wallpaper);mImageView.setImageDrawable(bitmap);// Attach a PhotoViewAttacher, which takes care of all of the zooming functionality.mAttacher = new PhotoViewAttacher(mImageView);
}// If you later call mImageView.setImageDrawable/setImageBitmap/setImageResource/etc then you just need to call
attacher.update();

下面给出的源码是我修改过的,我把原来的放大两次变成了放大一次,然后再双击的话就缩小到原图。至于单击直接退出的效果我给出一个思路,点击一个缩略图后开启一个activity,用渐变的效果显示。在这个弹出的activity放一个可以缩放的图片,然后给这个图片加个监听器(源码中我已经加了),点击后这个activity渐变消失。很简单吧~ 不过这里面需要注意的是缩略图的设置还有弹出activity时很可能要用进度条来等待网络图片

源码下载:http://download.csdn.net/detail/shark0017/7710153

用开源项目PhotoView实现图片的双指缩放和双击放大缩小相关推荐

  1. TouchImageView 实现图片的缩放,双击放大缩小,多点触控的功能

    首先扯点别的:昨天约人打拳皇,又被一顿海虐,也是艰难.万水千山总是情,虐我轻点行不行?八神用的越来越水了,昨天下午饭都没有胃口了.看样是时候退出拳皇97界了. 进入正题:今天说一个GITHUB上的一个 ...

  2. 【开源项目】Imagine图片压缩工具

    [开源项目]Imagine图片压缩工具 简介 Imagine 是一个用于压缩 PNG 和 JPEG 的桌面应用程序.Imagine 支持多种图片格式(JPEG, PNG, WebP),支持格式转换,跨 ...

  3. 前端vue项目(使用pdf.js) pdf展示及pdf工具栏放大缩小功能实现

    前端vue项目(使用pdf.js) pdf展示及pdf工具栏放大缩小功能实现 1.vue项目pdf展示 2.pdf工具栏放大缩小功能 文章目录 前端vue项目(使用pdf.js) pdf展示及pdf工 ...

  4. C#制作一个图片查看器,具有滚轮放大缩小,鼠标拖动,图像像素化,显示颜色RGB信息功能

    目录 前言 一.界面设计 二.关键技术 1.把图片拖入到窗体并显示 2.实现图像缩放的功能 3.实现图像的移动效果 4.实时显示当前鼠标处的RGB值 5. 右击功能的实现 6.效果展示 总结 前言 使 ...

  5. github上的开源项目中gif图片的制作软件

    在github上学习开源项目的时候,看到好些开源项目里的示例图片都是gif格式的,这些gif图片能够很好地介绍此开源项目的功能,尤其是在电脑上运行android模拟器时,然后就想着自己以后做开源的时候 ...

  6. Android 开源项目PhotoView遇到问题

    PhotoView 是一款扩展自Android ImageView ,支持通过单点/多点触摸来进行图片缩放的智能控件. 良好特性: 支持单点/多点触摸,即时缩放图片: 支持平滑滚动: 在滑动父控件下能 ...

  7. 自己写的一个类淘宝手机端图片浏览双指缩放的功能

    该组件已被弃用 如有需求请选择最新组件 最新组件previewImage-mobile-地址 新组件-仿微信js-sdk wx.previewImage JavaScript实现,支持图片预览,滑动切 ...

  8. 微信小程序movable-view移动图片和双指缩放

    先从movable-view开始说起吧. movable-view是微信小程序自定义的组件.其描述为:"可移动的视图容器,在页面中可以拖拽滑动". 值得注意的是文档中有一段备注: ...

  9. Android图片查看支持双击放大缩小、多点触摸(多机型测试,长期使用很稳定)

    该模块主要实现了放大和原大两个级别的缩放. 另外功能更加强大的一个类见本人另一篇博客 http://blog.csdn.net/gfg156196/article/details/49741233#r ...

最新文章

  1. workstation 14 PRO 秘钥
  2. ImportError: No module named _sqlite3 报错解决方法
  3. Bugzilla安装过程
  4. VTK:可视化之PointSize
  5. 职称计算机证书 评中级职称,软考证书如何申请评职称及职称申请流程的详细介绍...
  6. JAVA的BIT数组
  7. “钉钉打卡神器”开发者被判五年半!
  8. realme GT2 Pro抢先开启盲售:史上屏幕最好高端旗舰
  9. php整么去掉时间的年月日,php强大的时间转换函数strtotime
  10. 中兴2018年上半年业绩惨不忍睹,押宝5G建设能否让其起死回生?
  11. 快讯:永中集成Office的核心技术落入谁的手?
  12. 【每日一知】什么是TAOCP? (2021.02.07)
  13. 如何批量修改抖音视频的分辨率
  14. 联想电脑无法进入计算机,联想电脑进不去主界面怎么办
  15. YDOOK:版权C符号:怎样在任何地方 任何位置快速输入版权符号 © 快捷键
  16. win7升级win10正式版_最新win7如何升级win10操作教程,你还在用win7吗?
  17. java实现中文数字与阿拉伯数字互相转换
  18. 故宫景点功课4:太和殿院落下
  19. 张志华-统计机器学习
  20. 【LOJ6713】「EC Final 2019」狄利克雷 k 次根 加强版(狄利克雷生成函数)

热门文章

  1. Android 系统架构
  2. 9,线程池 threadPool 与 线程池执行器 threadPoolExecutor
  3. Swift翻译之-Swift语法入门 Swift语法介绍
  4. IOS之通知KVO的常量定义
  5. IOS开发基础之大转盘案例
  6. ios基础之归档和解档
  7. C语言编写工资管理系统类似学生管理系统
  8. 计算机专业颈椎有问题,出现这4个表现,你的颈椎病已经很严重了!上班族尤需警惕_39健康网...
  9. linux退出编辑器命令,LINUX中,Vi编辑器的几种模式及保存、退出等命令
  10. 百一测评java基础答案_百一测评——《Web应用开发》选择题(含参考答案)—JavaEE基础...