如何在android中实现图像视图的缩放效果?

我必须实现图像缩放,我已经尝试了这么多的代码。但我没有得到完整的手势事件的想法。 我想实现当我们应用双击时,图像将根据触摸位置(事件x和y)进行缩放。我只需要在这个时候实现缩放没有pan。可以有人提出我的意见吗?

编辑:其实我已经实现了与图像viewflipper,如果我尝试应用平移和缩放效果,有时图像将被改变。 我想为用户点击的地方实现缩放效果

给我一些想法….

懒惰的人可以使用这个lib ,只需要在你的项目中导入

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 mAttacher.update(); 

这是最有效的方法之一,它工作顺利:

https://github.com/MikeOrtiz/TouchImageView

TouchImageView.java放置在您的项目中。 然后可以使用它与ImageView相同。

例:

 TouchImageView img = (TouchImageView) findViewById(R.id.img); 

如果您在xml中使用TouchImageView ,则必须提供完整的软件包名称,因为它是自定义视图。

例:

  <com.example.touch.TouchImageView android:id="@+id/img” android:layout_width="match_parent" android:layout_height="match_parent" /> 

这里是一个很好的例子,介绍如何通过一个imageview实现缩放效果

在imageview上放大效果

编辑:

这里也是另一个伟大的。

捏放大教程

我希望你做得很好。当他们想要在你的应用程序中添加新的function的时候,经常会发生这种情况,通常他们都会search那些不好的策略库,因为你不知道在这个脚本中有什么样的代码。 所以我总是喜欢分叉库,并在我的应用程序代码中添加有用的类和方法。

所以当我坚持同样的问题,我做了很多的研发,然后我find了一个类,它提供了放大,缩小和pinIn和out的能力。 所以你可以在这里看到这个课。 。

正如我之前所说,这是一个单一的课程。 所以你可以把这个类放在像utils文件夹这样的项目中的任何地方,并把下面的行放到你的XML文件中,如:

 <your_packege_name.TouchImageView android:id="@+id/frag_imageview" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="fitCenter" android:src="@drawable/default_flag" android:transitionName="@string/transition_name_phone" /> 

而且您可以在尊重的活动中find该图像视图,就像您为所有视图所做的一样 – :

 TouchImageView tv=(TouchImageView)findViewById(R.id.frag_imageview); tv.setImageResource(R.drawable.ic_play); 

这是TouchImageView 。 享受我们的代码:)

非常简单的方法(testing): –

 PhotoViewAttacher pAttacher; pAttacher = new PhotoViewAttacher(Your_Image_View); pAttacher.update(); 

在build.gradle中添加波纹线: –

 compile 'com.commit451:PhotoView:1.2.4' 

这实际上是Android中Image Zoom和Pan的最好例子,

http://blog.sephiroth.it/2011/04/04/imageview-zoom-and-scroll/

你可以在相关的问题中检查答案。 https://stackoverflow.com/a/16894324/1465756

只要导入图书馆https://github.com/jasonpolites/gesture-imageview

到您的项目中,并在布局文件中添加以下内容:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:gesture-image="http://schemas.polites.com/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <com.polites.android.GestureImageView android:id="@+id/image" android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/image" gesture-image:min-scale="0.1" gesture-image:max-scale="10.0" gesture-image:strict="false"/>` 

我最喜欢的图书馆davemorrissey / subsampling-scale-image-view chrisbanes / PhotoView (star18bit的答案)

  • 两个都是活跃的项目(都在2015年有一些提交)
  • 两者都在PlayStore上有一个Demo
  • subsampling-scale-image-view支持较大的图像(1080p以上),没有内存exception,因为子采样, PhotoView不支持
  • subsampling-scale-image-view似乎有更大的API和更好的文档

如果希望在Eclipse / ADT中使用subsampling-scale-image-view,请参阅如何将AAR转换为JAR