幻灯片活动转换中的Android bug

幻灯片活动转换中的Android bug,android,animation,transition,slide,Android,Animation,Transition,Slide,因此,在尝试使用幻灯片活动转换时,应用程序在使用重力时崩溃。使用以下方法启动: getWindow().setExitTransition(new Slide(Gravity.START)); 我得到了这个错误: IllegalArgumentException:滑动方向无效 但是,如果查看源代码,上面的特定构造函数调用setslidedge(),在这种情况下,该方法通过一个switch语句来设置前面指定的重力: switch (slideEdge) { case Gravit

因此,在尝试使用
幻灯片
活动转换时,应用程序在使用
重力时崩溃。使用以下方法启动

getWindow().setExitTransition(new Slide(Gravity.START));
我得到了这个错误:

IllegalArgumentException:滑动方向无效

但是,如果查看源代码,上面的特定构造函数调用
setslidedge()
,在这种情况下,该方法通过一个switch语句来设置前面指定的重力:

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语句中执行默认情况,唯一的解释是它是一个bug


我会向谷歌报告,但他们没有公开的方式来报告像这样的API错误,而且在这种情况下,这个错误并不明显。因此,对于任何想要使用重力为
START

的幻灯片动画的人来说,这是一个在API 21设备上崩溃的问题。 原因是API 21中的
幻灯片
的初始版本仅支持
重力

解决此问题的一种方法是使用


getAbsoluteGravity()
方法接受首选重力(
START
END
)和当前布局方向,并根据当前配置将重力返回为
LEFT
RIGHT

我遇到了相同的问题。转换在Nexus 5.1上工作正常,但在OnePlus 1 5.0.2上会导致崩溃。幻灯片动画在api 21中不兼容,它的工作时间大于21。@Destro,不是,这不是根据
幻灯片
方法
幻灯片进行的更正。setSlideEdge()
类是在API 21中添加的。我已经在所有人中打开了一个问题,虽然在API 21中添加了
幻灯片,但它不支持
重力。开始
重力。结束
直到API 22,请参见下面我的答案。
new Slide(GravityCompat.getAbsoluteGravity(GravityCompat.START, getResources().getConfiguration().getLayoutDirection()));