Ich versuche, Touch-Feedback zu einem LinearLayout hinzuzufügen, das einem normalen Button-Feedback in API-Ebene 21 ähnelt, ähnlich wie in this Beispiel, und bisher erfolglos gewesen.Android Ripple-Effekt + Elevation auf Nicht-Button-Ansichten
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:colorControlHighlight">
<item android:id="@android:id/mask">
<shape android:shape="rectangle">
<solid android:color="?android:colorAccent" />
</shape>
</item>
und verwendet, um die StateListAnimator, dass Google bietet here:
ich eine Standard-Ripple ziehbar wie folgt definiert haben
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="true" android:state_pressed="true">
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="translationZ"
android:valueTo="@dimen/touch_raise"
android:valueType="floatType" />
</item>
<item>
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="translationZ"
android:valueTo="0dp"
android:valueType="floatType" />
</item>
Nach der Definition des Animator und wellig ziehbar, ich habe sie zu meinem Li hinzugefügt nearLayout wie so:
<LinearLayout
android:id="@+id/linearLayout"
android:clickable="true"
android:focusable="true"
android:orientation="horizontal"
android:background="@drawable/ripple"
android:stateListAnimator="@anim/touch_elevation">
Die Idee ist, dieses Linearlayout als Schaltfläche zu verwenden, da es viel einfacher für mich ist es, verschiedene Arten von Text einzufügen und Imagepositionierung im Innern (im Gegensatz zu Taste Drawables) handhaben.
Hinzufügen der Ripple-Effekt oder die Animation separat funktioniert, solange der Hintergrund der Ansicht keine Transparenz wie this Frage hat.
Ich bin nicht sicher, ob dies ein Problem in Bezug auf die oben genannte Frage ist, aber da der Standard-Button sowohl Ripple- als auch Elevation-Animationsfeedback verwendet, kann dieser Effekt auch in anderen Ansichten erreicht werden.
Jeder Einblick in dieses Problem würde sehr geschätzt werden.
verwenden Wenn Sie den Welleneffekt erwarten angewandt werden, wenn der Benutzer tippt auf 'LinearLayout', benötigen Sie ein entsprechendes' StateListDrawable' zu verwenden, die nicht direkt Ihre '' verweisen. –
CommonsWare
Bitte erläutern Sie – Rakatan
Ihr vorhandener Hintergrund sagt "zeige eine Welle sofort". Das scheint eine kuriose Wahl zu sein. Der Hintergrund eines 'Button' ist ein' StateListDrawable', um verschiedene Bilder für normal, gedrückt, deaktiviert, fokussiert usw. zu verwenden. Sie müssten dasselbe tun. – CommonsWare