programacion - Android: elevar de forma permanente la vista
manual de programacion android pdf (1)
Esto se puede lograr utilizando el estado seleccionado de la Vista. Si hace clic en Ver, setSelected(true)
y cuando vuelva a hacer clic, setSelected(false)
.
yourView.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
v.setSelected(!v.isSelected()); // toggle selected state
}
});
El StateListAnimator puede manejar el estado seleccionado. Puede agregar un nuevo artículo para atrapar state_selected="true"
:
<item android:state_selected="true">
<set>
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="translationZ"
android:valueTo="8dp"
android:valueType="floatType"/>
</set>
</item>
Ahora, si se selecciona View, tendrá una elevación de 8dp
. Si no se selecciona, StateListAnimator caerá a la elevación predeterminada de 0dp
.
Tengo un RecyclerView
, que tiene un efecto RippleEffect, así como un StateListAnimator (que se muestra a continuación):
anim_lift.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_enabled="true"
android:state_pressed="true">
<set>
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="translationZ"
android:valueTo="8dp"
android:valueType="floatType"/>
</set>
</item>
<item>
<set>
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="translationZ"
android:valueTo="0"
android:valueType="floatType"/>
</set>
</item>
</selector>
La pregunta es, ¿cómo se podría elevar la vista que está utilizando este xml cuando se hace clic en él, y luego quitarlo cuando se haga clic nuevamente en la vista?