提问者:小点点

修改图像分辨率和大小以适应卡片视图


我有一个来自我的android应用程序的错误消息,它使用卡片视图和回收视图,我认为分配图像的大小和分辨率的问题,这是错误消息:

这是我的卡片布局XML文件:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/card_view"
    android:layout_margin="5dp"
    card_view:cardBackgroundColor="#81C784"
    card_view:cardCornerRadius="12dp"
    card_view:cardElevation="3dp"
    card_view:contentPadding="4dp"
    android:foreground="?selectableItemBackground"
    android:clickable="true" >
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="16dp" >

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/item_image"
            android:scaleType="fitXY"
            android:adjustViewBounds="true"
            android:layout_alignParentStart="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_alignParentRight="true"/>

        <TextView
            android:layout_marginTop="8dp"
            android:id="@+id/item_title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:gravity="center"
            android:textSize="16pt"
            android:paddingLeft="10dp"
            android:layout_below="@+id/item_image"
            />


    </RelativeLayout>

</android.support.v7.widget.CardView>

共1个答案

匿名用户

您可能正在内存中加载一个大位图,它会导致内存溢出异常。

为避免java. lang.OutOfMemory异常,请在解码位图之前检查位图的尺寸。

您必须执行以下步骤来处理它-

  • 在内存中加载完整图像的估计内存使用量。
  • 考虑到应用程序的任何其他内存要求,您愿意promise加载此图像的内存量。
  • 要加载图像的目标ImageView或UI组件的尺寸。
  • 当前设备的屏幕尺寸和密度。

从这里找到如何执行上述步骤-https://developer.android.com/topic/performance/graphics/load-bitmap.html
或者您使用可以为您完成所有这些的图像加载库。
有许多可用的库:Glide、Picasso、Fresco、UIL