Поэтому, пытаясь использовать переход активности Slide
, но с другой серьезностью, приложение падает при использовании Gravity.START
, используя это:
getWindow().setExitTransition(new Slide(Gravity.START));
и я получаю эту ошибку:
IllegalArgumentException: Неверное направление слайда
Но если вы посмотрите в исходном коде, этот конкретный конструктор над вызовами setSlideEdge()
, то в этом случае этот метод проходит через оператор switch, чтобы установить значение Gravity, которое вы указали ранее:
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
работает нормально, но поскольку я хочу поддержку RTL, имеет смысл использовать Gravity.START
. Я в замешательстве, почему случай по умолчанию выполняется в этом операторе switch, и единственным объяснением для него является ошибка.
Я бы сообщил об этом Google, но у них нет общедоступных способов сообщать об ошибках API, подобных этому, и в этом случае ошибка не совсем очевидна для исправления. Итак, PSA для всех, кто хочет использовать анимацию слайдов с гравитацией START
.