波及効果を実現する 2 つの方法
1. コントロールのテーマと背景 (前景) プロパティを設定することによって
1. スタイルを定義する
<style name="Ripple">
<item name="android:colorControlHighlight">#D8D8D8</item> <!-- 指定点击时波纹的颜色-->
<item name="android:radius">10dp</item> <!-- 这个选项根据需要设置,指定点击时波纹的半径大小-->
</style>
2. 波及効果を設定します。
境界線の波及効果のプロパティ:
?android:attr/selectableItemBackground
ボーダーレス波及効果のプロパティ
?android:attr/selectableItemBackgroundBorderless
一般に、コントロールの android:background 属性に設定できます。コントロールが android:background 属性を使用して背景色または背景画像を設定しているが、クリックしたときに波及効果が必要な場合は、設定を検討できます。 android:foreground 属性に波紋効果を設定すると、クリック時に波紋が発生するようになり、コントロールの背景の設定には影響しません。境界線がない場合、前景と背景の表示効果は異なります。前景の波及効果はコントロールのサイズを超えませんが、背景はコントロールのサイズを超えますが、親コントロールのサイズを超えることはありません。
3. コントロールに設定する
android:theme="@style/Ripple"
android:background="?android:attr/selectableItemBackgroundBorderless"
TextView、ImageView などの Button および ImageButton コントロールを除き、コントロールがデフォルトでクリック可能でない場合は、android:clickable="true" を設定する必要があります。
例えば:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:focusable="true"
android:theme="@style/Ripple"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:text="Ripple" />
波紋スタイルと境界波紋効果アトリビュートを組み合わせると、次のようなさまざまな効果が得られます。
<style name="RippleNoSize">
<item name="android:colorControlHighlight">@color/teal_200</item><!-- 指定点击时波纹的颜色-->
</style>
<style name="RippleSize">
<item name="android:colorControlHighlight">@color/teal_200</item><!-- 指定点击时波纹的颜色-->
<item name="android:radius">10dp</item> <!-- 指定点击时波纹的大小-->
</style>
@color/teal_200 値はカスタム カラーです。
2.リップルのドローアブルファイルをバックグラウンドでロードする
1. res のdrawable ディレクトリにリップル リソース ファイルを定義します (例: ripple_bg.xml)。
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#0ADCDD"><!--波纹的颜色 -->
</ripple>
項目が設定されていない場合はフチなしの波及効果となります。
2. コントロールのバックグラウンドでリップルリソースファイルを参照する
android:background="@drawable/ripple_bg"
例えば:
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/ripple_bg"
android:gravity="center"
android:clickable="true"
android:padding="15dp"
android:text="rippleStyle无边界无大小" />
TextView、ImageView などの Button および ImageButton コントロールを除き、コントロールがデフォルトでクリック可能でない場合は、android:clickable="true" を設定する必要があります。
リップル リソース ファイルでは、アイテム オプションを使用して境界線効果を実現するかどうかを指定できます。
ボーダーリップル
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#0ADCDD">
<item android:id="@android:id/mask"
android:drawable="@android:color/white" />
</ripple>
他のスタイルはアイテムを通じて設定できます。Android L Ripple の使用方法を参照してください。
参考
1.Androidコントロールのクリック、リップル効果(リップルの詳細説明)