支持捏放大和滚动的Android ImageViewer类

我正在search一个ImageViewer库,在我的应用程序中为一个给定的URI打开一个图像(web服务获取的图像已经存储在我的应用程序中的一个安全的地方)。 我非常喜欢“Samsung Galaxy S”ImageViewer-Activity,因为它使用了缩放和“滚动”垂直/水平。 另外它在我的三星手机上快速缩放图片:)

我知道我可以像这样打开一个图像:

Intent i = new Intent(Intent.ACTION_VIEW); i.setDataAndType(uri, "image/*"); startActivity(i); 

当没有发现ActivityNotFoundExceptionexception时,调用最合适的查看器。 所以这很酷!

但问题是我不允许用外部意图打开图像(出于安全目的)。 即:用户不应该有可能性通过菜单选项保存打开的图像到他的外部sd卡或发送这个图片到另一个服务(电子邮件/微博等)。 所以我必须写我自己的ImageViewer类(活动),只能在我的应用程序中调用…不幸的是,我不是很熟练的转换图像,那么是否有任何开源项目(或库),涵盖此用例?

我已经问谷歌,发现这一个http://code.google.com/p/androidpinch/但它没有工作得很好(也没有滚动function)。

感谢您的提示:)

Solutions Collecting From Web of "支持捏放大和滚动的Android ImageViewer类"

处理图像最简单的方法是使用WebView ,如果图像存储在本地或在线的某处。 WebView支持捏缩放和其他function。

示例Java:

 String imageUrl = "file:///local/dir/image.jpg"; // http://img.androidcookie.com/android/image.jpg WebView wv = (WebView) findViewById(R.id.yourwebview); wv.getSettings().setBuiltInZoomControls(true); wv.loadUrl(imageUrl); 

XML来源:

 <WebView android:id="@+id/yourwebview" android:layout_width="match_parent" android:layout_height="match_parent" /> 

在这一刻我也使用WebView。 但是这在概念上是错误的,WebView不是用于显示图像,而是用于显示网页内容。 WebView体积庞大笨重。 你限制在自定义它。 例如,我需要缩放,但我不想看到缩放控件,或者我想将它们移动到其他位置,然后默认。

因此,我search了这个问题,并find了一些解决scheme:

  • 来自Chris Banes的PhotoView小部件
  • 另外,你可以看看索尼爱立信的这个教程(可用的资源),并可以实现你自己的widget: part1 , part2 , part3
  • 还有一个图书馆ImageViewZoom在github上

UPDATE

克里斯·巴恩斯创build了真棒图书馆,支持手势放大图片,看到上面的第一点