Android按钮选择器转换exitFade问题

时间:2017-12-20 07:13:28

标签: android xml

我正在开发我的第一个应用程序而且我遇到了问题...我发现有一个名为 android的xml标签:exitFadeDuration =“” 我想要用于在我的自定义按钮视图之间使用转换延迟。

这是我的按钮选择器:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
    android:exitFadeDuration="125">
    <item android:drawable="@drawable/alert_btn_on"
        android:state_pressed="true" />
    <item android:drawable="@drawable/alert_btn_on"
        android:state_focused="true" />
    <item android:drawable="@drawable/alert_btn_off" />
</selector>

这是我的 alert_btn_off

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape  android:shape="rectangle">
            <solid android:color="@color/darkestMain" />
            <corners android:radius="5dp" />
        </shape>
    </item>

    <item android:bottom="5dp">
        <shape  android:shape="rectangle">
            <solid android:color="@color/darkerMain" />
            <corners android:radius="5dp" />
        </shape>
    </item>
</layer-list>

这是我的 alert_btn_on

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape  android:shape="rectangle">
            <solid android:color="@color/colorMainDark" />
            <corners android:radius="5dp" />
        </shape>
    </item>

    <item android:bottom="5dp">
        <shape  android:shape="rectangle">
            <solid android:color="@color/darkerMain" />
            <corners android:radius="5dp" />
        </shape>
    </item>
</layer-list>

btnOn和btnOff之间的唯一区别是底部边框,它变成了蓝色......这是我在 android:exitFadeDuration =“125” < / p>

按钮默认

按下按钮状态A

]

按下状态按B

我喜欢这种过渡,但我只需要为边界设置过渡,有什么办法可以实现这一点吗?顺便说一句,如果我使用enterFadeTransition,就会发生同样的事情。

1 个答案:

答案 0 :(得分:0)

如果您想仅为按钮的边框而不是整个背景设置动画,则必须将动画限制为边框。

您将只有一个名为/drawable/alert_btn.xml的图层列表:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/statelist"/>

    <item android:bottom="5dp">
        <shape android:shape="rectangle">
            <solid android:color="@android:color/white" />
            <corners android:radius="5dp" />
        </shape>
    </item>
</layer-list>

/drawable/statelist.xml看起来像这样:

<selector xmlns:android="http://schemas.android.com/apk/res/android" android:exitFadeDuration="500">
    <item android:state_focused="true" android:state_pressed="false">
        <shape android:shape="rectangle">
            <corners android:radius="5dp" />
            <solid android:color="@color/colorAccent" />
        </shape>
    </item>
    <item android:state_pressed="true">
        <shape android:shape="rectangle">
            <corners android:radius="5dp" />
            <solid android:color="@color/colorAccent" />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">
            <corners android:radius="5dp" />
            <solid android:color="@color/colorPrimary" />
        </shape>
    </item>
</selector>