幻灯片活动转换中的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()));