Próbuję zaimplementować transakcję fragmentu z animacją slajdów/wylogowania. Zajmuję się minimum 14 SDK, więc ObjectAnimator jest dla mnie jedyną opcją (czy istnieje jakaś inna metoda? Tłumaczenie animacji jest niedostępne, jak rozumiem).FragmentTransacation z animacją slajdów/out na> 4 wydajności
Kodeks jest bardzo prosta:
AnimationView.java - klasa 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);
}
}
Przesuń w & z 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"/>
Animacje działa idealny, jak widać użyłem właściwość niestandardową yFraction. Ale wydajność jest bardzo zła ... w niektórych tabletkach zauważyłem poziomą białą linię (około 3 px wysokości) podczas animacji, w innym smartfonie po prostu zwolnił (nie trwa długo, ale migotanie).
znalazłem sposób aby to naprawić jeśli ustawić valueFrom & valueTo dopasować wymiar widok, ale to nie jest nazwą rodzajową i muszą być od 0 do 1 za rodzajową dla wszystkich widoków
ceniłaby jeśli niektóre może mi pomóc lub powiedzieć, czy istnieje inny sposób wdrożenia na Androidzie 14 i nowszych.
Dzięki.