Animasyon parçaları arasında geçiş
Parçalar arasında geçiş animasyon yapmaya çalışıyorum. Aşağıdaki cevabı aldım
Android Fragments and animation
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);
DetailsFragment newFragment = DetailsFragment.newInstance();
ft.replace(R.id.details_fragment_container, newFragment, "detailFragment");
// Start the animated transition.
ft.commit();
Ve benim R. kullanılabilir.slide_in_left
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="50%p" android:toXDelta="0"
android:duration="@android:integer/config_mediumAnimTime"/>
<alpha android:fromAlpha="0.0" android:toAlpha="1.0"
android:duration="@android:integer/config_mediumAnimTime" />
</set>
Ama bu çalıştığımda gösterdi
02-08 16:27:37.961: ERROR/AndroidRuntime(1717): FATAL EXCEPTION: main
02-08 16:27:37.961: ERROR/AndroidRuntime(1717): java.lang.RuntimeException: Unknown animator name: translate
02-08 16:27:37.961: ERROR/AndroidRuntime(1717): at android.animation.AnimatorInflater.createAnimatorFromXml(AnimatorInflater.java:129)
02-08 16:27:37.961: ERROR/AndroidRuntime(1717): at android.animation.AnimatorInflater.createAnimatorFromXml(AnimatorInflater.java:126)
02-08 16:27:37.961: ERROR/AndroidRuntime(1717): at android.animation.AnimatorInflater.createAnimatorFromXml(AnimatorInflater.java:93)
02-08 16:27:37.961: ERROR/AndroidRuntime(1717): at android.animation.AnimatorInflater.loadAnimator(AnimatorInflater.java:72)
02-08 16:27:37.961: ERROR/AndroidRuntime(1717): at android.app.FragmentManagerImpl.loadAnimator(FragmentManager.java:621)
02-08 16:27:37.961: ERROR/AndroidRuntime(1717): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:733)
02-08 16:27:37.961: ERROR/AndroidRuntime(1717): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:919)
02-08 16:27:37.961: ERROR/AndroidRuntime(1717): at android.app.BackStackRecord.run(BackStackRecord.java:578)
02-08 16:27:37.961: ERROR/AndroidRuntime(1717): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1217)
Herhangi bir fikir? API referans Petek baktığımda translate
. Ne kaçırdım?
Parçalar arasında geçiş animasyon için başka bir yol var mı?
Teşekkür ederim
CEVAP
FragmentTransaction.setTransition
12 *ile android.animation
yeni çerçeve (animasyon nesne) kullanmak gerekir.
İşte ApiDemos setCustomAnimations
kullanarak üzerinde bir örnek'FragmentHideShow.java:
ft.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out);
ve buradan ilgili animatör XMLres/animator/fade_in.xml:
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:interpolator/accelerate_quad"
android:valueFrom="0"
android:valueTo="1"
android:propertyName="alpha"
android:duration="@android:integer/config_mediumAnimTime" />
Eski animasyon çerçeve ile olabilir gibi birden fazla animasyon <set>
kullanarak birleştirebilirsiniz unutmayın.
EDİT: Millet slayt-in/-out slide hakkında soru soruyor beri, burada açıklayacağım.
Slayt-ve-dışarı kaydırın
Elbette, *, x
, *translationY
18 ve y
özelliklerini animasyon olabilir, ama genellikle slaytlar ve off-ekrana gelen animasyon içerik dahil. Göreli değerleri kullanan herhangi bir çeviri özellikleri yok bildiğim kadarıyla. Ancak, bu onları kendine yazmasını engellemez. Tesiste animasyon sadece animasyon olduğunuz nesneler üzerinde alıcı ve ayarlayıcı yöntemleri gerektirir unutmayın (bu durumda görünümleri), sadece bu yüzdenkendi oluşturungetXFraction
setXFraction
gibi görünüm alt sınıf yöntemleri:
public class MyFrameLayout extends FrameLayout {
...
public float getXFraction() {
return getX() / getWidth(); // TODO: guard divide-by-zero
}
public void setXFraction(float xFraction) {
// TODO: cache width
final int width = getWidth();
setX((width > 0) ? (xFraction * width) : -9999);
}
...
}
Animasyon artık 'özelliği, bunun gibi . xFraction
res/animator/slide_in.xml:
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator"
android:valueFrom="-1.0"
android:valueTo="0"
android:propertyName="xFraction"
android:duration="@android:integer/config_mediumAnimTime" />
Eğer animasyon sende nesnenin üst aynı genişlikte değil. öyleyse işler emlak uygulama tweak kullanma durumu uygun ihtiyaç duyabilirsiniz bu yüzden oldukça doğru bakmak olmaz unutmayın.
Android Navigasyon Çekmece görüntü ara...
İç içe geçmiş parçaları animasyon geçi...
bir animasyon ile Sekmeler arasında ge...
animasyon olmadan geçiş faaliyetleri...
Orada değilse kullanma arasında anlaml...