我正在搜索一个ImageViewer库,它在我的应用程序中为给定的URI打开一个图像(webservice提取的图像已经存储在我的应用程序中的安全位置)。我非常喜欢“三星Galaxy S”ImageViewer-Activity,因为它使用双指缩放和“滚动”垂直/水平。它还能在我的三星手机上快速缩放图片:)
我知道我可以用这样的意图打开图像:
Intent i = new Intent(Intent.ACTION_VIEW);
i.setDataAndType(uri, "image/*");
startActivity(i);
正在调用最合适的查看器,当没有找到时,会引发ActivityNotFoundException。太酷了!
但问题是我不允许打开具有外部意图的图像(出于安全目的)。即:用户不应该通过菜单选项将打开的图像保存到外部SD卡中,或将此图片发送给其他服务(email / twitter或s.o.)。所以我必须编写自己的ImageViewer-Class(Activity),只能在我的应用程序中调用... 不幸的是,我不是很熟练的转换图像,所以有没有涵盖这个用例的开源项目(或库)?
我已经问了google并找到了这个http://code.google.com/p/android-pinch/,但它没有很好用(也没有滚动功能)。
感谢您的提示:)
答案 0 :(得分:20)
此时我也使用WebView。但这在概念上是错误的,WebView不是用于显示图像,而是用于显示Web内容。 WebView体积庞大且繁琐。你限制自定义它。例如,我需要缩放,但我不想看缩放控件,或者我想将它们移动到其他地方然后默认。
因此,我搜索了这个问题并找到了一些解决方案:
Chris Banes创建了一个很棒的库,支持缩放图片的手势,请参阅上面的第一点
答案 1 :(得分:16)
处理图像的最简单方法是使用WebView
,如果图像存储在本地或某处在线。 WebView支持缩放和其他功能。
示例Java:
String imageUrl = "file:///local/dir/image.jpg"; // http://example.com/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" />