【问题标题】:Displaying Large Image in Android在 Android 中显示大图像
【发布时间】:2016-02-15 08:30:18
【问题描述】:

我正在尝试大致显示 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:自行分配

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

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

在设备之间似乎并不相同。一台设备可能会转到右上角,而另一台则留在中间。最好的实现是什么?我宁愿避开图书馆并打破局面,但我对一个好的图书馆没有疑虑。我只需要在商业应用程序中可用。

谢谢大家!

【问题讨论】:

  • 商业项目中的库有什么问题?
  • 我并不是说库有什么问题,只是库需要我将应用程序开源或支付我想远离的费用。我进行了编辑以进一步说明这一点

标签: android html image android-studio pan


【解决方案1】:

应该这样做:

https://github.com/davemorrissey/subsampling-scale-image-view

首先,添加com.davemorrissey.labs:subsampling-scale-image-view:3.4.1 其次,代替WebView,使用它的自定义ImageView:

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

【讨论】:

  • 谢谢!我会玩弄它,看看这是否有效!
猜你喜欢
  • 2011-09-24
  • 2013-06-19
  • 2011-05-27
  • 1970-01-01
  • 2016-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多