Android 应用转换时状态栏闪烁

Android 应用转换时状态栏闪烁,android,android-transitions,android-statusbar,Android,Android Transitions,Android Statusbar,在活动和应用转换之间切换时,我无法使状态栏不闪烁 活动: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_basic); setupTransitions(); } private void setupTransitions() { if (andr

在活动和应用转换之间切换时,我无法使状态栏不闪烁

活动:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_basic);
    setupTransitions();
}

private void setupTransitions() {
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
        setupEnterTransition();
        setupReenterTransition();
        setupExitTransition();
        setupReturnTransition();
    }
}

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private void setupEnterTransition(){
    Slide slide = new Slide(Gravity.END);
    slide.excludeTarget(R.id.activity_header, true);
    setEnterTransition(slide);
}

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private void setupReenterTransition(){
    Slide slide = new Slide(Gravity.START);
    slide.excludeTarget(R.id.activity_header, true);
    setReenterTransition(slide);
}

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private void setupExitTransition(){
    Slide slide = new Slide(Gravity.TOP);
    slide.excludeTarget(R.id.activity_header, true);
    setExitTransition(slide);
}

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private void setupReturnTransition(){
    Slide slide = new Slide(Gravity.BOTTOM);
    slide.excludeTarget(R.id.activity_header, true);
    setReturnTransition(slide);
}

protected void setEnterTransition(Transition transition) {
   if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
       getWindow().setEnterTransition(setUpTransition(transition, true));
   }
   }
setExitTransition、setReentInterTransition和setReturnTransition看起来相同,但调用了appropiate方法,所以我没有复制它们

@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private Transition setUpTransition(Transition transition){
    transition.setDuration(250);
    transition.excludeTarget(android.R.id.statusBarBackground, true);
    transition.excludeTarget(android.R.id.navigationBarBackground, true);
    return transition;
}
我按如下方式开始转换:

public void transitionTo(Intent intent){
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        ActivityOptionsCompat transitionActivityOptions = ActivityOptionsCompat.makeSceneTransitionAnimation(this);
        startActivity(intent, transitionActivityOptions.toBundle());
    }else{
        startActivity(intent);
    }
}
我将窗口的背景设置为可绘制,以避免在运行转换时看到黑色屏幕

getWindow().setBackgroundDrawable(new ColorDrawable(ContextCompat.getColor(this, R.color.backgroundColor)));
所以问题是,当我从Activity1传递到Activity2(它们共享相同的代码)时,会应用转换,并且状态栏不会闪烁

但是,通过按工具栏中的backButton或home项返回到上一个活动1,将应用转换,但状态栏将闪烁


我尝试了本文中建议的两种方法,但都没有成功。

您找到解决方案了吗?