性能:使用Webview显示图像而不是ImageView

时间:2014-10-14 10:18:42

标签: android webview

在我的Android Activity中,我想要显示来自网络的大约10张图片。通常,我必须创建10 ImageView来显示每个图像,但ImageView可能会导致Out of memory exception。所以我决定使用10 WebView来显示图像。它运作得很好。

但是我不知道WebView的性能如何,任何人都可以告诉我10 WebViews的性能如何?我可以使用这种方法来显示图像吗?

2 个答案:

答案 0 :(得分:2)

WebView在内存和图像视图中占用更多空间。只需显示图像,就无法在webView中进行适当的缩放。 Webview可以更快地将图像弹出到Ui,但这不是有效的方式。

您可以尝试使用Volly,它具有用于图像下载,缓存和缩放的构建工具,我也可以为您提供相当快速的保证。

您需要做的就是将Volley库添加到项目中,并使用com.android.volley.toolbox.NetworkImageView替换XML布局中的ImageView。

将以下变量添加到Activity类:

private RequestQueue mRequestQueue;
private ImageLoader mImageLoader;
Create the objects in the onCreate() method of your Activity:

mRequestQueue = Volley.newRequestQueue(context);
mImageLoader = new ImageLoader(mRequestQueue, new ImageLoader.ImageCache() {

    private final LruCache<String, Bitmap> mCache = new LruCache<String, Bitmap>(10);

    public void putBitmap(String url, Bitmap bitmap) {
            mCache.put(url, bitmap);
    }

    public Bitmap getBitmap(String url) {
        return mCache.get(url);
    }
});

然后下载适配器类的getView()方法的图像:

NetworkImageView image = (NetworkImageView)view.findViewById(R.id.image);
image.setImageUrl("http://someurl.com/someimage.png",mImageLoader);

在生产代码中,您将使用RequestQueue和ImageLoader类的全局实例,并且您的onCreate()方法不会像在此玩具示例中那样混乱。

我不会使用webview来显示图像,当然可以这样做。如果你真的想看看哪种方式“更快”,你可以尝试使用ImageView,NetworkImageView和WebView加载一个大图像,并使用System.nanoTime()方法进行粗略的时间估计。

答案 1 :(得分:0)

您是否同时显示10张图片?

如果是,则图像视图的大小必须相对较小,因此您可以使用小版本的图像并避免内存不足错误(或下载实际大小但在内存中创建小版本)。

如果没有,您应该使用ListView或GridView或ViewPager或回收视图的东西。您只能同时在内存中获取其中几个并避免内存不足错误。

此外,还有优秀的库来显示下载和显示图像,例如Universal Image Loader将在后台执行所有操作,将图像大小调整为所需大小,您可以激活内存缓存/磁盘缓存等。