如何在Android的视图背景状态发生变化时制作淡出效果?

时间:2014-11-13 02:55:29

标签: android

现在我有一个按钮并使用选择器作为背景,选择器有pressedfocus状态:

<?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中的变化,并绘制一个额外的位图,它将播放淡出动画。但我认为这不是一个好理想。所以我来到这里询问是否有更好的方法可以达到它?

1 个答案:

答案 0 :(得分:13)

尝试在可绘制选择器中定义淡入淡出持续时间

<selector xmlns:android="http://schemas.android.com/apk/res/android"
          android:enterFadeDuration="150" android:exitFadeDuration="150">