Sto tentando di aggiungere un feedback tattile a un LinearLayout simile a un normale feedback di Button in livello API 21, molto simile all'esempio this e finora non riuscito.Effetto Effetto Android + Elevazione sulle viste senza pulsante
ho definito un disegnabile ondulazione standard come questo:
<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>
e utilizzato lo StateListAnimator che Google fornisce here:
<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>
Dopo aver definito l'animatore e ripple drawable, li ho aggiunti al mio Li nearLayout in questo modo:
<LinearLayout
android:id="@+id/linearLayout"
android:clickable="true"
android:focusable="true"
android:orientation="horizontal"
android:background="@drawable/ripple"
android:stateListAnimator="@anim/touch_elevation">
L'idea è quella di utilizzare questo LinearLayout come un pulsante, in quanto è molto più semplice per me di inserire vari tipi di testo e gestire il posizionamento ImageView al suo interno (al contrario di drawable pulsante).
L'aggiunta dell'effetto di ripple o dell'animazione funziona separatamente, a condizione che lo sfondo della vista non abbia trasparenza come da domanda this.
Non sono sicuro che si tratti di un problema correlato alla domanda sopra menzionata, ma visto che il pulsante standard riesce a utilizzare sia il ripple che l'elevazione di feedback dell'animazione, immagino che ottenere questo effetto sia possibile anche su altri punti di vista.
Qualsiasi comprensione di questo problema sarebbe molto apprezzata.
Se vi aspettate l'effetto a catena da applicare quando l'utente tocca sul 'LinearLayout', è necessario utilizzare un adeguato' StateListDrawable', non fa riferimento direttamente il vostro ''. –
CommonsWare
Prego elaborare – Rakatan
Lo sfondo esistente dice "mostra immediatamente un ripple". Sembra una scelta curiosa. Lo sfondo di un 'Button' è un' StateListDrawable', per usare immagini diverse per normale, premuto, disabilitato, focalizzato, ecc. Avresti bisogno di fare la stessa cosa. – CommonsWare