17

ダウン状態を実現するためのいくつかのボタンの背景として使用している非常に基本的なセレクターがあります。xml は次のとおりです。

<selector xmlns:android="http://schemas.android.com/apk/res/android"
    android:exitFadeDuration="@android:integer/config_mediumAnimTime">
    <item android:drawable="@color/home_button_blue_down" android:state_selected="true" />
    <item android:drawable="@color/home_button_blue_down" android:state_pressed="true" />
    <item android:drawable="@color/home_button_blue" />
</selector>

このセレクターを使用すると、ボタンの状態が変化するたびにフェード アニメーションが発生します。つまり、トランジションは、押された状態から押された状態に移行するときと、押された状態から押された状態に戻るときの両方でアニメーション化されます。

さて、私の質問は、これらの状態変化の 1 つだけがアニメーション化されるようにすることは可能ですか? ユーザーがボタンを押すと、アニメーションなしですぐに downstate 遷移が発生するようにします。ボタンが押されたときに、通常の状態がフェードインしている間、ダウン状態をフェードアウトさせたいのですが、これはできますか?

4

3 に答える 3

16

次のようなことができます。

<?xml version="1.0" encoding="utf-8"?>
<animated-selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/selected"
        android:state_selected="true"
        android:drawable="@color/home_button_blue_down"
        />

    <item android:id="@+id/usual"
        android:drawable="@android:color/transparent"
        />

    <transition
        android:fromId="@+id/usual"
        android:toId="@+id/selected" >
        <animation-list>
            <!--fill in your animation here-->
        </animation-list>
    </transition>
</animated-selector>

animated-selectorAPI 21 以降でのみ使用できることに注意してください。

この公式ガイドの詳細

于 2015-09-03T09:58:52.260 に答える
8
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:enterFadeDuration="@android:integer/config_shortAnimTime"
android:exitFadeDuration="@android:integer/config_longAnimTime">
<item android:state_pressed="true" >
    <shape>
        <gradient
            android:startColor="#ffffff"
            android:endColor="#917777"
            android:angle="270" />
    </shape>
</item>
<item android:state_pressed="false" >
    <shape>
        <gradient
            android:startColor="#ffffff"
            android:endColor="#d2adad"
            android:angle="270" />
    </shape>
</item>
<item android:state_checked="true">
    <color android:color="@color/black"/>
</item>
</selector>
于 2018-12-28T10:01:57.120 に答える