1. ホーム
  2. android

[解決済み] サポートライブラリを使って波紋アニメーションを実現するには?

2022-04-20 12:41:06

質問

ボタンクリック時に波紋のアニメーションを追加しようとしています。以下のようにしましたが、minSdKVersionが21であることが必要です。

リップル.xml

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="?android:colorControlHighlight">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="?android:colorAccent" />
        </shape>
    </item>
</ripple>

ボタン

<com.devspark.robototextview.widget.RobotoButton
    android:id="@+id/loginButton"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/ripple"
    android:text="@string/login_button" />

デザインライブラリの後方互換性を持たせたい。

どうすればいいのでしょうか?

どのように解決するのですか?

基本的なリップルの設定

  • ビューに含まれる波紋。

    android:background="?selectableItemBackground"

  • ビューの境界を越えて広がる波紋。

    android:background="?selectableItemBackgroundBorderless"

    ご覧ください こちら を解決するために ?(attr) xmlの参照をJavaコードで使用することができます。

サポートライブラリ

  • 使用方法 ?attr: (または ? の代わりに ?android:attr を参照します。 サポートライブラリ そのため、API 7まで遡って利用可能です。

画像・背景付き波紋

  • 画像や背景と波紋を重ねるには、最も簡単な方法は View の中に FrameLayout で設定したリップルと setForeground() または setBackground() .

正直なところ、これ以外にきれいな方法はありません。