【发布时间】:2015-12-05 00:26:03
【问题描述】:
我有一个带有 DrawerLayout 的活动,但是每当它打开时,都会有一个延迟,例如屏幕为白色的瞬间,然后我的屏幕被绘制。
这发生在转换完成后。所以看起来屏幕动画过渡是跳跃的。
在将视图与 ButterKnife 绑定后,我尝试将它放在我的 OnCreate 上,但它什么也没做。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
postponeEnterTransition();
drawerLayout.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public boolean onPreDraw() {
drawerLayout.getViewTreeObserver().removeOnPreDrawListener(this);
startPostponedEnterTransition();
return true;
}
});
}
是的,我正在为棒棒糖优化它,对于棒棒糖之前的设备,我只是使用overridePendingTransitions,它工作正常。我的问题只在 Lollipop 设备上。
顺便说一句,我的 Enter 和 Exit 转换都是 fade_in_out在 xml 中定义并在 styles 中指定
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="colorAccent">@color/pink</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowActivityTransitions">true</item>
<item name="android:windowContentTransitions">true</item>
<!-- specify enter and exit transitions -->
<!-- options are: explode, slide, fade -->
<item name="android:windowEnterTransition">@transition/fade_in_out_transition</item>
<item name="android:windowExitTransition">@transition/fade_in_out_transition</item>
<!-- specify shared element transitions -->
<item name="android:windowSharedElementEnterTransition">@transition/change_clip_bounds</item>
<item name="android:windowSharedElementExitTransition">@transition/change_clip_bounds</item>
<item name="android:windowSoftInputMode">stateAlwaysHidden|adjustResize</item>
</style>
【问题讨论】:
-
您是否尝试通过示例项目重现该问题?如果是,最好将其上传到 github 上并进行一些测试。
-
您的抽屉里是否有一些像大图片这样的大东西需要加载并可能导致延迟?
-
我的抽屉里没有大东西,只有文本视图和一个小图标。
-
一个问题:这总是发生在您执行应用程序的每台设备上,还是仅在模拟器中?
-
它发生在每个设备中
标签: android animation drawerlayout android-transitions