我已閱讀了很多關於Android上的沉浸式粘滯模式的問題,但我無法找到針對我的問題的特定答案。系統欄Flash隨後在沉浸式粘滯模式中消失
我已閱讀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);
}
我呼籲結束()從_Domino.class回到_TrickPage.class:
findViewById(R.id.picture).setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
dBHelper.close();
finish();
}
});
我用另一種過渡共享元素轉換。下面是一個內部類ButtonAdapter的,它擴展了BaseAdapter,對象在我_Submenu活動:
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;
}
}
這是我第一次問關於堆棧溢出的問題,所以請向我的代碼的任何其他地方,如果你認爲有可能是有問題。謝謝!
所有參與活動確實有()在OnCreate中執行該代碼(的setContentView()調用之後)的onResume()和onWindowsFocusChanged()。雖然我可以通過這樣做來重構,但我認爲它不會解決問題。 – Didoubletwice
它沒有爲我工作。我使用上面的方法體創建了一個全局靜態方法'goImmersive(Window window)',所以所有的活動都可以通過調用'HelperFunctions.goImmersive(getWindow());'在setContentView()之後將此方法調用放入OnCreate並在每個活動的onWindowsFocusChanged()方法中,但是當我回去時條形仍然閃爍。 – Didoubletwice