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

Posted 壮士暮年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的状态栏效果一致呢

技术分享

以上是关于Android Ireader的全屏与非全屏的切换效果实现的主要内容,如果未能解决你的问题,请参考以下文章

浏览器全屏之requestFullScreen全屏与F11全屏

微信小程序bnner滚动

Unity发布的WebGL页面应用实现全屏/非全屏切换

div的全屏与退出全屏

vue中实现浏览器全屏与退出全屏功能

非全屏和全屏 UIViewController 之间的漂亮幻灯片过渡