AndroidのRipple効果を実現する方法


  1. XMLでRipple効果を設定する方法: まず、res/drawableディレクトリにripple_effect.xmlという名前の新しいXMLファイルを作成します。以下のコードを追加します。
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="?android:attr/colorControlHighlight">
    <item android:id="@android:id/mask">
        <shape android:shape="rectangle">
            <solid android:color="#FFFFFF" />
        </shape>
    </item>
</ripple>

次に、対象のTextView要素でbackground属性を設定し、上記のXMLファイルを参照します。

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/ripple_effect"
    android:text="Hello Ripple!" />
  1. プログラムでRipple効果を設定する方法: JavaまたはKotlinのコードでRippleDrawableオブジェクトを作成して、TextViewの背景として設定することもできます。以下のコードはJavaでの例です。
import android.content.res.ColorStateList;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.RippleDrawable;
import android.os.Build;
import android.widget.TextView;
// ...
TextView textView = findViewById(R.id.textView);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    int[][] states = new int[][]{
            new int[]{android.R.attr.state_pressed},
            new int[]{}
    };
    int[] colors = new int[]{
            Color.parseColor("#FF0000"), // Ripple color when pressed
            Color.parseColor("#0000FF")  // Default ripple color
    };
    ColorStateList colorStateList = new ColorStateList(states, colors);
    RippleDrawable rippleDrawable = new RippleDrawable(colorStateList, new ColorDrawable(Color.WHITE), null);
    textView.setBackground(rippleDrawable);
}

上記のコードでは、RippleDrawableを作成し、押された状態と通常の状態のために異なる色を設定しています。

これらの方法を使用することで、AndroidアプリケーションでTextViewにRipple効果を追加することができます。