標籤:
ireader在全屏與非全屏切換,整體的閱讀view並沒有進行明顯示的重繪與抖動現像,如果只是單純的設定activity的全屏與非全屏切換,因為view的大小變動,會有抖動現象出現
而Android只在4.4版本才提供了沈浸式狀態攔,而在4.4之前怎麼辦呢
1.首先直接在AndroidManifest.xml中需要全螢幕顯示的Activity屬性中添加
1 android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
2.設定activity的背景為透明
@Override public void onCreate(Bundle savedInstanceState) { getWindow().setFormat(PixelFormat.TRANSLUCENT); getWindow().setBackgroundDrawable(null); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
3.在指定觸發代碼設定全屏與非全屏邏輯切換,比如ireader就是點擊閱讀介面中部
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的狀態列效果一致呢
Android Ireader的全屏與非全屏的轉場效果實現