码迷,mamicode.com
首页 > 其他好文 > 详细

动态设置全屏、取消全屏的方法,以及切换全屏保持内容位置不变的方法

时间:2014-09-24 15:22:37      阅读:328      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   ar   sp   问题   on   c   

http://blog.csdn.net/lovehong0306


有两种形式设置、取消全屏的方法,之所以称作两种形式而不是两种方法,是因为这两种方式只是写法不同,实质是一样的。


形式一:

//设置全屏

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

//取消全屏

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);


形式二:

//设置全屏

WindowManager.LayoutParams attr = getWindow().getAttributes();
attr.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
getWindow().setAttributes(attr);

//取消全屏

WindowManager.LayoutParams attr = getWindow().getAttributes();
attr.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().setAttributes(attr);



全屏状态改为非全屏保持内容位置不变:
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR);


这里有一个问题:

当设置了该flag之后取消全屏,部分内容被状态栏挡住(忽略状态栏高度,以屏幕右上角为原点计算布局)

加上代码getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);可以解决该问题,但再次设置全屏的时候状态栏不消失。

目前该问题尚未想到好的解决方案,

如果谁有思路解决了该问题,欢迎提供给我。


http://blog.csdn.net/lovehong0306


动态设置全屏、取消全屏的方法,以及切换全屏保持内容位置不变的方法

标签:style   blog   http   color   ar   sp   问题   on   c   

原文地址:http://my.oschina.net/u/1777508/blog/317893

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!