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)
但是,这会动画整个列表视图,而不仅仅是列表选择器,我怎么能修改代码?
你必须为你的列表中选择您在放置一个XML文件/drawable-nodpi,并调整值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>
Run Code Online (Sandbox Code Playgroud)
请注意,使用这种技术,这是正确的方法,动画将只在API级别11及以上(Android 3+)上可见,但今天它意味着超过80%的设备.较旧的设备将看到正确的颜色,但没有淡入淡出的动画.
| 归档时间: |
|
| 查看次数: |
2871 次 |
| 最近记录: |