我有一個ViewPager和FragmentPagerAdapter在一個活動中設置了3個片段。所有碎片,同時加載並使用通過編程以全屏模式生成片段
mPager.setOffscreenPageLimit(2);
其中一個片段承載了攝像頭預覽,我想使全屏幕,沒有狀態欄或操作欄被保存在內存中。其他片段要求顯示操作欄。
我怎樣才能使全屏相機預覽片段,同時保持其他兩個片段正常?我嘗試過使用主題,這意味着打破行動欄。
編程調用下面沒有幫助,因爲它迫使整個活動將是全屏幕(並因此與它一起的另外兩個片段):
requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
我也嘗試推行ViewPager.OnPageChangeListener:
public void onPageSelected(int position) {
if(position == 1)
getActionBar().hide();
else
getActionBar().show();
}
這確實隱藏操作欄,但它並不隱藏系統狀態欄(我說的是哪裏的通知,狀態圖標和時間),以及操作欄隱藏/顯示動畫滑動時也非常不連貫。
有關我想要做的確切事情的示例,請參閱Snapchat - 他們設法完美地拉開相機和其他碎片之間的滑動。
編輯:
所以我改變了我的使用onPageSelected這樣:
public void onPageSelected(int position) {
if(position == 1) {
MainActivity.this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
MainActivity.this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
} else {
MainActivity.this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
MainActivity.this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
}
}
這使我改變是否顯示沒有狀態欄。但是,它會導致大量的結果。與操作欄相同的問題。
我注意到,在Snapchat中狀態欄上下滑動標籤更改完成後。我不知道如何實現這一點,所以有關這方面的任何意見,將不勝感激。
我試過這個的修改版本,這有助於消除狀態欄,但它像瘋了一樣落後 –
此外,我只是意識到,如果片段由於頁面從內存中卸載,可能會導致崩潰應用程序輕掃或者是否曾經被破壞和重新創建,如從方向變更。您需要使用findFragmentById()獲取對片段的引用,因爲舊引用無效 –
什麼是mActionBar? –