我已经在Android上阅读了很多关于沉浸式粘性模式的问题,但我无法找到针对我的问题的具体答案。
我已阅读onBackPressed function not working under IMMERSIVE STICKY mode,但在按下ImageButton时我的应用程序成功返回。
我希望在整个应用期间保持沉浸式粘性模式。使用和不使用共享元素转换启动新活动时没有问题。然而,当我回去时,系统条有时会出现,然后很快再次滑出视野。特别是当我停留一段时间的活动时,就会发生这种情况。
从_TrickPage.class调用此转换:
public void setBorroRingsOnClickListener(View view){
dBHelper.close();
Intent intent = new Intent(this, _DominoScene.class);
startActivity(intent);
}
我调用finish()从_Domino.class返回_TrickPage.class:
findViewById(R.id.picture).setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
dBHelper.close();
finish();
}
});
我使用的另一个转换是共享元素转换。以下是ButtonAdapter的内部类,它扩展了BaseAdapter,这是我的_Submenu Activity中的一个对象:
class MyOnClickListener implements View.OnClickListener {
private final int position;
public MyOnClickListener(int position){
this.position = position;
}
@Override
public void onClick(View v) {
...
//link clicked button to _TrickPage button for shared transition
v.setTransitionName("trick");
//make and start shared transition to _TrickPage
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(
(Activity)mContext,
new Pair<View, String>(v, "trick")
);
Intent intent = new Intent(v.getContext(), _TrickPage.class);
v.getContext().startActivity(intent, options.toBundle());
}
}
最后,为了从_TrickPage回到_Submenu,我打电话给finishaftertransition():
picture.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dBHelper.close();
hideMainContent();
finishAfterTransition();
}
});
我在所涉及的活动的onCreate()和onResume()方法中设置了UI标志:_Submenu,_TrickPage和_DominoScene。我还在每项活动中都有以下内容:
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
//if (hasFocus)
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
if (hasFocus && playAnimations) {
//showMainContent();
playAnimations = false;
}
}
这是我第一次询问有关Stack Overflow的问题,所以如果您认为我的代码存在任何问题,请询问我代码的其他任何部分。谢谢!
答案 0 :(得分:0)
从每个Activity调用onCreate方法(在setContentView方法之后)调用此方法。还有onWindowsFocusChanged
public void goImmersive()
{
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}