Sto tentando di implementare la transazione di frammento con l'animazione slide in/out. Sto sviluppando su minimo 14 sdk quindi ObjectAnimator è l'unica opzione per me (c'è un altro modo? L'animazione di traduzione non è disponibile come ho capito).FragmentTransacation con animazione slide in/out su> 4 performance
il codice è molto semplice:
AnimationView.java - classe wrapper
public class AnimationView extends LinearLayout {
public AnimationView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public float getYFraction() {
return getHeight();
}
public void setYFraction(float yFraction) {
final int height = this.getHeight();
setY((height > 0) ? (yFraction * height) : -9999);
}
}
scorrere in & fuori di xml
<?xml version="1.0" encoding="utf-8"?>
<set>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:propertyName="yFraction"
android:valueType="floatType"
android:valueFrom="-1"
android:valueTo="0"
android:duration="600"/>
<?xml version="1.0" encoding="utf-8"?>
<set>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:propertyName="yFraction"
android:valueType="floatType"
android:valueFrom="0"
android:valueTo="1"
android:duration="600"/>
animazioni funziona perfetto, come potete vedere ho usato yFraction proprietà personalizzata. Ma le prestazioni sono pessime ... in alcune tavolette ho notato una linea bianca orizzontale (circa 3 px di altezza) durante l'animazione, in altri dispositivi dello smartphone è andato solo per rallentare (non per la lentezza ma per il tremolio).
ho trovato un modo per risolvere il problema, se ho impostato valueFrom & valueto per adattarsi alla dimensione vista, ma non è generica e bisogno di essere 0-1 per essere generico per tutte le viste
saremmo grati se qualche mi può aiutare o dirmi se c'è un altro modo per implementare su Android 14 e fino.
Grazie.