如何在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