在Android中显示大图像

时间:2016-02-15 08:30:18

标签: android html image android-studio pan

我试图大致以4kpx显示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:自我分配

我还想滚动到地图上的坐标以获取兴趣点。但是使用命令

    webview.setScrollX(10000);
    webview.setScrollY(4000);

设备之间似乎没有保持不变。一个设备可能会转到右角,而另一个设备仍然在中间。什么是最好的实施?我宁愿远离图书馆并打破局面,但我对一个好的图书馆没有任何疑虑。我只需要在商业应用程序中使用。

谢谢大家!

1 个答案:

答案 0 :(得分:2)

这应该做:

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"));