【问题标题】:Listview with items which have drawable background has poor performance具有可绘制背景的项目的 Listview 性能较差
【发布时间】:2014-04-19 13:52:59
【问题描述】:

我有一个listview,其中的项目有一些我这样定义的精美阴影背景:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Drop Shadow Stack -->
    <item>
        <shape>
            <padding android:top="1.2dp" android:right="1.2dp" android:bottom="1.2dp" android:left="1.2dp" />
            <solid android:color="#02000000" />
            <corners android:radius="8dp" />

        </shape>
    </item>
    <item>
        <shape>
            <padding android:top="1.2dp" android:right="1.2dp" android:bottom="1.2dp" android:left="1.2dp" />
            <solid android:color="#05000000" />
            <corners android:radius="7dp" />
        </shape>
    </item>
</layer-list>

这很好用,但将其用作列表视图项目的背景会使其性能变差,从而减慢速度。对于我在 item.xml 中定义背景的项目,即(不带文本视图、图像):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/drop_shadow"
    android:orientation="horizontal"
  >

如果我将 android:background 值设置为一种颜色,它可以正常工作,所以问题肯定是每次listview 刷新时,它都必须加载drop_shadow.xml 可绘制对象。 我的问题是它是否可以以某种方式进行优化?例如,这与在项目中使用自定义字体的情况相同,我必须创建一个 TypefaceCahce 并从中加载字体,因此它只需要在每次列表视图刷新时都加载一次。是否有类似的可绘制解决方案?

【问题讨论】:

  • 您能否添加在列表视图适配器中获取视图的方式。

标签: android listview drawable


【解决方案1】:

尝试在您的 ListView XML 中添加这些:

android:scrollingCache="false"
android:animationCache="false"

【讨论】:

    猜你喜欢
    • 2013-03-15
    • 2015-01-17
    • 2011-04-20
    • 1970-01-01
    • 2012-02-23
    • 2014-06-20
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多