动画列表选择器颜色

da_*_*_st 2 android android-animation android-listview

我有这个listview:

<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>
Run Code Online (Sandbox Code Playgroud)

它有一个列表选择器,当列表中的项目被选中时显示绿色,我想要创建的是在选择项目时淡化颜色,而不是只是出现,我怎么能只为列表选择器设置动画?

我试过这个:

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

            }
            });  
Run Code Online (Sandbox Code Playgroud)

但是,这会动画整个列表视图,而不仅仅是列表选择器,我怎么能修改代码?

Bla*_*der 8

你必须为你的列表中选择您在放置一个XML文件/drawable-nodpi,并调整值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>
Run Code Online (Sandbox Code Playgroud)

请注意,使用这种技术,这是正确的方法,动画将只在API级别11及以上(Android 3+)上可见,但今天它意味着超过80%的设备.较旧的设备将看到正确的颜色,但没有淡入淡出的动画.