Sta*_*ter 16 animation android transition slide
因此,在尝试使用" Slide活动"转换但具有不同的重力时,应用程序在使用时崩溃Gravity.START,使用此:
getWindow().setExitTransition(new Slide(Gravity.START));
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
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");
}
Run Code Online (Sandbox Code Playgroud)
Gravity.LEFT工作得很好,但因为我想要RTL支持,所以只使用它才有意义Gravity.START.我很困惑为什么在这个switch语句中执行默认情况,唯一的解释是它是一个bug.
我会向谷歌报告,但他们没有公开的方式来报告这样的API错误,在这种情况下,修复错误并不是很明显.所以,PSA给任何想要使用Gravity的Slide动画的人START.
Lew*_*ary 25
这是在API 21设备上崩溃的问题.其原因是,最初的版本Slide中API 21仅支持LEFT,TOP,RIGHT和BOTTOMgravitys.
解决方法之一是使用GravityCompat从支持库.
new Slide(GravityCompat.getAbsoluteGravity(GravityCompat.START, getResources().getConfiguration().getLayoutDirection()));
Run Code Online (Sandbox Code Playgroud)
该getAbsoluteGravity()方法采用优选的重力(START或END)和当前布局方向,并根据当前配置LEFT或RIGHT适当时返回重力.
| 归档时间: |
|
| 查看次数: |
2175 次 |
| 最近记录: |