我有这个列表视图:
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/imageView9"
android:divider="#fff"
android:cacheColorHint="#00000000"
android:dividerHeight="0.9dp"
android:listSelector="#80ED84"
android:choiceMode="singleChoice"
android:layout_marginBottom="50dp"
android:background="#fff"
>
</ListView>
它有一个列表选择器,当选择列表中的项目时显示绿色,我想要创建的是在选择项目时淡化颜色,而不是只显示它,我怎么能只动画列表选择器?
我试过这个:
listView = (ListView) findViewById(R.id.list);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> av, final View view, final int i, long i2) {
Animation anim = AnimationUtils.loadAnimation(SendActivity.this, R.anim.fade_in);
view.startAnimation(anim);
}
});
但是这会激活整个列表视图,而不仅仅是列表选择器,我该如何修改代码呢?
答案 0 :(得分:8)
您必须为放置在/drawable-nodpi
中的列表选择器创建一个XML文件,并将android:enterFadeDuration
和android:exitFadeDuration
的值调整为所需的淡入淡出动画时长。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" android:enterFadeDuration="@android:integer/config_mediumAnimTime" android:exitFadeDuration="@android:integer/config_mediumAnimTime">
<item android:drawable="@color/a_lighter_green_color" android:state_focused="true" android:state_pressed="false"/>
<item android:drawable="@color/your_green_color" android:state_pressed="true"/>
<item android:drawable="@android:color/transparent"/>
</selector>
请注意,使用这种技术,这是正确的方法,动画只会在API级别11及以上(Android 3+)上可见,但今天它意味着超过80%的设备。较旧的设备将看到正确的颜色,但没有淡入淡出的动画。