web-dev-qa-db-ja.com

ImageButtonの外にリップル効果を実装する

ImageButtonにリップル効果を実装しようとしています。背景のリップルとsrcの描画可能な画像を設定しました。

Android:background="@drawable/myripplexml"
Android:src="@drawable/myimagepath"

ボタンレイアウト内に素敵な波及効果を与えます。しかし、Rippleエフェクトをボタンレイアウトの外側にも拡張したいのです。

 Android:background="?android:attr/selectableItemBackgroundBorderless"

ただし、デフォルトの色とスタイルを使用します。色、形、サイズに関してどのようにカスタマイズできますか?

29

私はこれに遭遇し、私の問題は、「selectableItemBackgroundBorderless」が長方形を作成する一方で、ボタンが円形であったことです。これが元の質問に答えているかどうかはわかりませんが、ここに私が見つけたものがあります:drawable-v21でこれに背景を設定してください

<ripple
        xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:color="?android:colorControlHighlight">
    <item Android:id="@Android:id/mask">
        <shape Android:shape="oval">
            <solid Android:color="?android:colorAccent" />
        </shape>
    </item>
</ripple>

下位APIレベルの@null(実際の画像ボタンsrcにセレクターを使用していると仮定)。ボタンのパディングで最も見やすい波紋。マスキングレイヤーがまったくない場合リップルはバインドされておらず、画面全体を支配します。円でなければ、どんな形でも使用できます。

19
Travis Castillo

あなたが私のような怠け者なら、デフォルトの波紋を利用して、後方互換性を忘れてください。基本的に、urビューに追加できる2つのタイプの背景リップルがあります。

 ?android:selectableItemBackground // Ripple within view
 ?android:selectableItemBackgroundBorderless //Ripple outside view

残念ながら、これらの波紋は常に灰色です。テーマに基づいてこれらを調整するには、ur親テーマに移動し、colorControlHighlightを変更します。

アプリのメインテーマ:

<item name="colorControlHighlight">#1bff3a</item>

この値は、デフォルトのリップルの色を変更します。

注:21未満のデバイスでは、リップルは設定した同じ色の通常のセレクターに変わります。

10
amalBit

@alanがコメントで言及したように。マスクと子アイテムのないリップルアイテムを作成し、それをビューの背景として追加すると、リップルは最初に使用可能な親の上に描画され、ビューの境界を拡張する場合があります。 これはドキュメントに記載されています

<!-- An unbounded red ripple. --/>
<ripple Android:color="#ffff0000" />
9
guy.gc