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

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

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

PhotoViewAttacher mAttacher;
ImageView mImageView; @Override
protected 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 displayed
Drawable 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; @Override
public 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; @Override
public 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 }; @Override
public int getCount() {
return sDrawables.length;
} @Override
public View instantiateItem(ViewGroup container, int position) {
//定义可以缩放的图片对象
PhotoView photoView = new PhotoView(container.getContext());
photoView.setImageResource(sDrawables[position]); // Now just add PhotoView to ViewPager and return it
container.addView(photoView, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); return photoView;
} @Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
} @Override
public 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 displayed
Drawable 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. 一步一步手写GIS开源项目-(2)地图平移缩放实现

    系列文章目录 一步一步手写GIS开源项目-(1)500行代码实现基础GIS展示功能 一步一步手写GIS开源项目-(2)地图平移缩放实现 项目github地址:https://github.com/Hu ...

  2. Android 开源项目PhotoView源码分析

    https://github.com/chrisbanes/PhotoView/tree/master/library 这个就是项目地址,相信很多人都用过,我依然不去讲怎么使用.只讲他的原理和具体实现 ...

  3. 用开源项目CropImage实现图片的裁剪(不推荐)

       之前介绍过一个截图的办法(http://www.cnblogs.com/tianzhijiexian/p/3900241.html),这里再分享个开源项目.它也是截图,但是效果不是很好,首先还是 ...

  4. 用开源项目FlipImageView实现图片的翻转效果

         开源项目地址:https://github.com/castorflex/FlipImageView 本实例我没做什么改动,就是添加了注释,方便大家阅读.和之前一样,导入library和工程 ...

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

    先从movable-view开始说起吧. movable-view是小程序自定义的组件.其描述为:"可移动的视图容器,在页面中可以拖拽滑动". 官方文档地址:https://mp. ...

  6. 自定义ImageView实现图片手势滑动,多点触摸放大缩小效果

    首先呢,还是一贯作风,我们先来看看众多应用中的示例:(这种效果是很常见的,可以说应用的必须品.)                搜狐客户端                               ...

  7. js实现双指缩放图片 手机端双指缩放图片

    首先引入js文件,需要jq,pinchzoom.js.pinchzoom.js需要在jq环境下使用,可以 <meta name="viewport" content=&quo ...

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

    图片的放大缩小实现效果是使用的github上的一个开源项目photoView实现的,下载地址:https://github.com/chrisbanes/PhotoView 下面看测试代码: acti ...

  9. 开源项目源码解析-PhotoView 源码解析

    1. 功能介绍 特性(Features): 支持 Pinch 手势自由缩放. 支持双击放大/还原. 支持平滑滚动. 在滑动父控件下能够运行良好.(例如:ViewPager) 支持基于 Matrix 变 ...

随机推荐

  1. yum命令简介

    yum 一些较常见的用法 命令 功能 yum check-update 检查可更新的所有软件包 yum update 下载更新系统已安装的所有软件包 yum upgrade 大规模的版本升级,与yum ...

  2. .NetCore 中如何实现分页以及编写一个URL分页

    首先看下效果 这个分页控件不是很完美,体现下思路就行了,有兴趣的可以自己完善,我把代码贴出来,在这边文章中已有一些介绍 代码 public class UosoPagerTagHelper : Tag ...

  3. python的mock功能,感觉入门了~~~

    主要实现语法有patch, patch.object, Mock(). 下面的测试太赤裸裸了,只是为了熟悉语法. import unittest from unittest.mock import p ...

  4. 9-2 The Tower of Babylon uva437 (DP)

    题意:有n种立方体 每种都有无穷多个 要求选一些立方体叠成一根尽量高的柱子  (可以自行选择哪条边为高 )使得每个立方体的底面都严格小于他下方的立方体 为DAG模型 在任何时候 只有顶面的尺寸会影响到 ...

  5. 关于 facebook

    2017/10/29 Facebook账号分分钟被禁用,见怪不怪就好了,禁了就申诉呗 Facebook 如果遇到帐号被停用 / 帐号被封锁,大致上来说有叁个原因: 1, 名字用假名 2, 一个人拥有多 ...

  6. python MySQL慢查询监控

    MySQL慢查询会话监控 #!/usr/bin/python # -*- coding: UTF-8 -*- from email.mime.text import MIMEText from ema ...

  7. Netty源码分析之NioEventLoop(二)—NioEventLoop的启动

    上篇文章中我们对Netty中NioEventLoop创建流程与源码进行了跟踪分析.本篇文章中我们接着分析NioEventLoop的启动流程: Netty中会在服务端启动和新连接接入时通过chooser ...

  8. 为JSP写的一套核心标签

    为JSP写的一套核心标签, 有了这套标签, 根本不需要自定义标签了 (1) 准备 需要standard.jar,jstl.jar两个jar包,放入Tomcat 6.0/lib目录中(或者是/WEB-I ...

  9. AMD K7以来核心架构一览表

    转载或拿走使用请注明出处,谢谢! 注:K10以前AMD的CPU型号主要用PR值标称,故此表中未表示其准确型号

  10. 解决 MyEclipse build workspace 慢,validation javascript 更慢的问题

    自从升级了MyEclipse到7.0,项目Build的时候总是很慢,显示Validating 那些js,html文件.不管我怎么调整 Windows > Preference > MyEc ...