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