Android Ireader的全屏與非全屏的切換效果實現

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

相關文章
相關標籤/搜索