web-dev-qa-db-ja.com

imageviewに対する波及効果

私の問題を説明するために、私は小さな例を作成しました。

Imageviewとtextviewを備えたlinearlayoutがあります。 linearlayoutの場合、背景としてリップルドローアブルを設定しました。しかし、linearlayoutをクリックまたはロングクリックすると、リップルアニメーションがimageviewの下に表示されます。 imageview上でアニメーションをどのように表示しますか?

main.xml

<?xml version="1.0" encoding="utf-8"?>
<Android.support.constraint.ConstraintLayout
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@+id/activity_main"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">

    <LinearLayout
        Android:id="@+id/linear"
        Android:layout_width="200dp"
        Android:layout_height="200dp"
        Android:background="@drawable/ripple"
        Android:clickable="true"
        Android:orientation="vertical">

        <ImageView
            Android:layout_width="match_parent"
            Android:layout_height="100dp"
            Android:src="@mipmap/index" />

        <TextView
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:text="This is ripple test"
            Android:textColor="#FF00FF00" />
    </LinearLayout>

</Android.support.constraint.ConstraintLayout>

drawable-v21/ripple.xml:

<?xml version="1.0" encoding="utf-8"?>
<ripple
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:color="#FFFF0000">   
    <item>
        <shape Android:shape="rectangle">
            <solid Android:color="#FF000000"/>
        </shape>
    </item>    
</ripple>

drawable/ripple.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">    
    <item Android:state_pressed="true">
        <shape Android:shape="rectangle">
            <corners Android:radius="3dp" />
            <solid Android:color="#FFFF0000" />
        </shape>
    </item>
    <item Android:state_focused="true">
        <shape Android:shape="rectangle">
            <corners Android:radius="3dp" />
            <solid Android:color="#FFFF0000" />
        </shape>
    </item>
    <item>
        <shape Android:shape="rectangle">
            <corners Android:radius="3dp" />
            <solid Android:color="#FF000000" />
        </shape>
    </item>    
</selector>

現在のスクリーンショット:enter image description here

9
Anton111111

追加 Android:background="@null"ImageViewの場合

2
Ajay Sivan

このようにリップルを追加します

Android:foreground="?android:attr/selectableItemBackground"

この回答に基づく https://stackoverflow.com/a/35753159/2736039

22
Ultimo_m