高效的位图

卡迪克·沙玛(Kartik Sharma)

最近,在尝试在imageView中加载图像时,我遇到了“堆内存不足”错误。因此,我查看了互联网,并找到了优化图像的方法。

我期待找到优化位图的最佳方法。

目前,我有一个ImageView具有200dp高和“ match_parent”的宽度。基本上,它水平填充屏幕,垂直填充200dp。

我正在尝试实现此图像中的类似功能。

成就

这是我这样做的总体计划。

1)为1行创建一个布局(ImageView,TextView,文本后的黑色半透明条)

2)使用RecyclerView并填充数据

目前,我坚持执行步骤1(对代码不满意)。

我所做的是为该行创建XML布局。

<RelativeLayout
android:id="@+id/layout_adventure_fragment"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="200dp">

<ImageView
    android:id="@+id/imageView_adventure_home_screen_fragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<TextView
    android:background="@drawable/textview_background_gradient"
    android:layout_alignParentBottom="true"
    android:paddingBottom="10dp"
    android:paddingTop="10dp"
    android:paddingLeft="15dp"
    android:textColor="#FFFFFF"
    android:textSize="25sp"
    android:id="@+id/textView_adventure_name_home_screen_fragment"
    android:layout_width="match_parent"
    android:layout_height="55dp"
    android:text="Demo Text"/>

</RelativeLayout>

稍后,我将根据“版式指南”调整TextView。

好的,所以ImageView基本上是200dp高。为了压缩图像,我使用了Android培训页面上的指南,该指南使用inSampleSize并将图像加载到AsyncTask中。

为了计算所需的高度,我不确定是否使用了正确的方法。因为我只想压缩图像的高度,所以我只传递了高度来计算inSampleSize。

    DisplayMetrics disp = getApplicationContext().getResources().getDisplayMetrics();
    int density = disp.densityDpi;
    width = disp.widthPixels;
    height = (int)((float)(200.0/160.0) * (float)density);

    Bitmap b =decodeSampledBitmapFromResource(getResources(),R.drawable.shake,height);
    loadBitmap(R.drawable.shake,iV);

最后,我从最终的位图中提取了所需宽度和高度的缩略图,以向用户显示填充imageView的图像,而不是仅在边缘留有空白。

imageView.setImageBitmap(ThumbnailUtils.extractThumbnail(bitmap,width,height));

完整的代码可以在这里找到:http : //pastebin.com/mhKi1sKd

优化imageView的最佳方法是什么,以便在RecyclerView中显示多个图像时,堆内存不会满,并且程序中是否有不必要的代码仅占用处理时间和宝贵时间?

这是我到目前为止所取得的成就。

已达成

SO用户

看看Picasso图书馆。

毕加索会自动处理Android上许多常见的图片加载陷阱:

Handling ImageView recycling and download cancelation in an adapter.
Complex image transformations with minimal memory use.
Automatic memory and disk caching.

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章