动画列表选择器颜色

时间:2014-05-03 12:10:45

标签: android android-listview android-animation

我有这个列表视图:

<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);

            }
            });  

但是这会激活整个列表视图,而不仅仅是列表选择器,我该如何修改代码呢?

1 个答案:

答案 0 :(得分:8)

您必须为放置在/drawable-nodpi中的列表选择器创建一个XML文件,并将android:enterFadeDurationandroid: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%的设备。较旧的设备将看到正确的颜色,但没有淡入淡出的动画。