【发布时间】: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 并从中加载字体,因此它只需要在每次列表视图刷新时都加载一次。是否有类似的可绘制解决方案?
【问题讨论】:
-
您能否添加在列表视图适配器中获取视图的方式。