具有可绘制背景的项目的Listview性能较差

时间:2014-04-18 23:30:57

标签: android listview drawable

我有一个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中定义背景的项目,这是(没有textview,图像):

<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 drawable。 我的问题是它是否可以以某种方式进行优化?例如,它与在项目中使用自定义字体的情况相同,我必须创建一个TypefaceCahce并从中加载字体,因此它只需要加载一次而不是每次listview刷新时。是否有类似的drawables解决方案?

1 个答案:

答案 0 :(得分:0)

尝试在ListView XML中添加这些:

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