Android Ireader的全屏与非全屏的切换效果实现

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的状态栏效果一致呢

posted on 2016-03-22 09:59  壮士暮年心不死  阅读(1868)  评论(0编辑  收藏  举报

导航