在 Android 中显示大图像
Displaying Large Image in Android
我正在尝试粗略地显示 4kpx x 4kpx 的大图像。我想允许用户滚动,并使用双指缩放。我目前试过的方法是:
WebView webview = (WebView) findViewById(R.id.webView);
String data = "<body>" + "<img src=\"map.png\"/></body>";
webview.getSettings().setBuiltInZoomControls(true);
webview.loadDataWithBaseURL("file:///android_asset/", data, "text/html", "utf-8", null);
这似乎非常耗费资源,正如我收到的消息:
I/v_gralloc: Self allocation
我还想滚动到地图上的坐标以查找兴趣点。但是使用命令
webview.setScrollX(10000);
webview.setScrollY(4000);
设备之间似乎并不相同。一台设备可能会转到右角,而另一台设备则留在中间。什么是最好的实施?我更愿意远离图书馆并打破现状,但我对一个好的图书馆没有任何疑虑。我只需要在商业应用程序中可用。
谢谢大家!
应该这样做:
https://github.com/davemorrissey/subsampling-scale-image-view
首先,添加com.davemorrissey.labs:subsampling-scale-image-view:3.4.1
其次,使用它的自定义 ImageView 而不是 WebView:
<com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
最后,使用 setImage(ImageSource) 方法:
SubsamplingScaleImageView imageView = (SubsamplingScaleImageView)findViewById(id.imageView);
imageView.setImage(ImageSource.resource(R.drawable.monkey));
// ... or ...
imageView.setImage(ImageSource.asset("map.png"))
// ... or ...
imageView.setImage(ImageSource.uri("/sdcard/DCIM/DSCM00123.JPG"));
我正在尝试粗略地显示 4kpx x 4kpx 的大图像。我想允许用户滚动,并使用双指缩放。我目前试过的方法是:
WebView webview = (WebView) findViewById(R.id.webView);
String data = "<body>" + "<img src=\"map.png\"/></body>";
webview.getSettings().setBuiltInZoomControls(true);
webview.loadDataWithBaseURL("file:///android_asset/", data, "text/html", "utf-8", null);
这似乎非常耗费资源,正如我收到的消息:
I/v_gralloc: Self allocation
我还想滚动到地图上的坐标以查找兴趣点。但是使用命令
webview.setScrollX(10000);
webview.setScrollY(4000);
设备之间似乎并不相同。一台设备可能会转到右角,而另一台设备则留在中间。什么是最好的实施?我更愿意远离图书馆并打破现状,但我对一个好的图书馆没有任何疑虑。我只需要在商业应用程序中可用。
谢谢大家!
应该这样做:
https://github.com/davemorrissey/subsampling-scale-image-view
首先,添加com.davemorrissey.labs:subsampling-scale-image-view:3.4.1
其次,使用它的自定义 ImageView 而不是 WebView:
<com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
最后,使用 setImage(ImageSource) 方法:
SubsamplingScaleImageView imageView = (SubsamplingScaleImageView)findViewById(id.imageView);
imageView.setImage(ImageSource.resource(R.drawable.monkey));
// ... or ...
imageView.setImage(ImageSource.asset("map.png"))
// ... or ...
imageView.setImage(ImageSource.uri("/sdcard/DCIM/DSCM00123.JPG"));