动画列表选择器颜色

3

我有一个列表视图:

<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个回答

9

您需要创建一个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>

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

谢谢,我会试试这个! :) - da_st
我应该像这样将listSelector链接到动画吗?:android:listSelector="@drawable/list_selector_animation" - da_st
是的,您也可以在应用程序主题中进行设置,以影响所有的 ListView。 - BladeCoder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接