现在我有一个按钮并使用选择器作为背景,选择器有pressed
和focus
状态:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@color/item_gray" /> <!-- pressed -->
<item android:state_focused="true"
android:drawable="@color/item_gray" /> <!-- focused -->
</selector>
按钮的代码:
<Button
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/button_selector"
android:text="@string/hello_world" />
当状态改变时,让按钮改变背景很简单。而现在我需要更加美丽的背景。所以我希望在两种背景状态的变化之间增加淡出效果。
我搜索了谷歌和许多文档,并阅读了Button的源代码,我发现如果我Override the setPressed function
我可以这样做。
我可以知道状态在setPressed
中的变化,并绘制一个额外的位图,它将播放淡出动画。但我认为这不是一个好理想。所以我来到这里询问是否有更好的方法可以达到它?
答案 0 :(得分:13)
尝试在可绘制选择器中定义淡入淡出持续时间
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:enterFadeDuration="150" android:exitFadeDuration="150">