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,将应用转换,但状态栏将闪烁
我尝试了本文中建议的两种方法,但都没有成功。您找到解决方案了吗?