ireader在全屏與非全屏切換,總體的閱讀view並無進行明顯示的重繪與抖動現像,若是隻是單純的設置activity的全屏與非全屏切換,由於view的大小變更,會有抖動現象出現android
而Android只在4.4版本才提供了沉浸式狀態攔,而在4.4以前怎麼辦呢ide
1.首先直接在AndroidManifest.xml中須要全屏顯示的Activity屬性中添加spa
1 android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
2.設置activity的背景爲透明code
@Override public void onCreate(Bundle savedInstanceState) { getWindow().setFormat(PixelFormat.TRANSLUCENT); getWindow().setBackgroundDrawable(null); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
3.在指定觸發代碼設置全屏與非全屏邏輯切換,好比ireader就是點擊閱讀界面中部orm
findViewById(R.id.btStartOkhttp).setOnClickListener(new OnClickListener() { public void onClick(View v) { if (isFullScreen){ isFullScreen = false; getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); //非全屏 }else{ isFullScreen = true; getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); //清除非全屏的flag getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); //設置全屏的flag } } });
這時候你會發現,點擊切換邏輯時,半透明色狀態欄就會在界面頂部時影時現,而activity並無進行抖動重繪,還有一點要注意的是界面頂部最好預留狀態欄高度的留白處,若是有EditText控件,系統會默認進行界面下移處理,手指從頂部向下划動,狀態欄會出現一段時間,看看是否是和ireader的狀態欄效果一致呢xml