Yani Slide
Etkinlik geçişi kullanmaya çalışıyorum ama farklı bir yerçekimi ile kullanılarak, Gravity.START
kullanılarak yapılan uygulama çöker bu:Android hata
getWindow().setExitTransition(new Slide(Gravity.START));
ve bu hatayı alıyorum:
IllegalArgumentException: Invalid slide direction
Ancak, kaynak koduna bakarsanız, yukarıdaki belirli kurucu, setSlideEdge()
numaralı telefonu arar; bu durumda, yöntem daha önce belirttiğiniz Yerçekimini ayarlamak için bir anahtar deyiminden geçer:
switch (slideEdge) {
case Gravity.LEFT:
mSlideCalculator = sCalculateLeft;
break;
case Gravity.TOP:
mSlideCalculator = sCalculateTop;
break;
case Gravity.RIGHT:
mSlideCalculator = sCalculateRight;
break;
case Gravity.BOTTOM:
mSlideCalculator = sCalculateBottom;
break;
case Gravity.START:
mSlideCalculator = sCalculateStart;
break;
case Gravity.END:
mSlideCalculator = sCalculateEnd;
break;
default:
throw new IllegalArgumentException("Invalid slide direction");
}
Gravity.LEFT
gayet güzel çalışıyor, ancak ben RTL destek istiyorum çünkü, sadece yerine Gravity.START
kullanmak mantıklı. Bu anahtar deyiminde varsayılan durumun neden çalıştırıldığı konusunda kafam karıştı ve bunun tek açıklaması bu bir hatadır.
Bunu Google'a bildiririm ancak API hatalarını bu şekilde bildirmenin genel yolları yoktur ve bu durumda hata düzeltmek için tam olarak belirgin değildir. Yani, Slayt animasyonunu START
'un Yerçekimi ile kullanmak isteyen herkese PSA.
Aynı sorunu yaşıyorum. Geçişler Nexus 5 5.1'de iyi çalışır, ancak OnePlus One 5.0.2'de bir çökmeye neden olur. – EyesClear
Slayt animasyonu api 21'de uyumlu değildir. 21'den büyük bir iştir. – Destro
@Destro, "Slayt" yöntemine göre düzeltme yapmaz. setSlideEdge() 'sınıfı API 21'e eklenmiştir. – fahmy