android为啥透明不能全屏?如何将状态栏给隐藏起来。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android为啥透明不能全屏?如何将状态栏给隐藏起来。相关的知识,希望对你有一定的参考价值。
android 2.2及以下版本,是无法实现,Theme为透明的状态下,达到全屏。当然可以修改Framework层,将状态栏的设置为透明。。。达到类似全屏的效果。
有以下三种方法:
方法一
public class MainActivity extends Activity@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
// 隐藏标题栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
// 隐藏状态栏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
方法二
<!-- 同时隐藏状态栏和标题栏 -->
android:name="com.ysj.demo.MainActivity"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
方法三
<!-- Application theme. --><style name="AppTheme" parent="AppBaseTheme">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
<!-- 隐藏状态栏 -->
<item name="android:windowFullscreen">true</item>
<!-- 隐藏标题栏 -->
<item name="android:windowNoTitle">true</item>
</style>
注:
方法一中的两段代码要在setContentView()之前。
方法二只能同时隐藏状态栏和标题栏。
方法一和方法二都只应用于单个Activity。方法三应用于整个程序。
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
-----------------------------------------------------------------------------------------------------
安卓精英团为你解答
安卓精英团欢迎各位精英加入 参考技术B 设置>管理应用程序>全部>状态栏>强制停止>停止>全屏了隐藏了。希望对你有帮助。 参考技术C 状态栏隐藏可以下个go桌面
菜单》桌面设置》屏幕设置>桌面状态栏的√去掉。
透明全屏可以下个超级间谍摄像机(用来偷拍。没有声音的拿来干坏事的自重。。)
然后菜单》壁纸》动态墙纸》选择超级间谍摄像机就可以了追问
状态栏隐藏可以下个go桌面
菜单》桌面设置》屏幕设置>桌面状态栏的√去掉
我能不要这个状态栏么?一开机就不要?
我刚刚试了一下。。。。重启状态栏是没有的。。。
参考技术D 在android studio中加入如下代码:protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actionBar = getSupportActionBar();
if(actionBar !=null)
actionBar.hide();
会隐藏状态栏 第5个回答 2012-06-01 具体操作过程 去论坛查看 第6个回答 2012-06-01 版本不同吧,你刷一个没状态栏的版本就OK了追问
什么版本?现在用的2.2的?除了版本,还有其它方法没呢?
追答刷机有风险,你改主题吧,到相关手机论坛里找吧,多得很。而且2.2的版本也多得是,都是高手修改过的。
android沉浸式状态栏变色状态栏透明状态栏修改状态栏颜色及透明
首先我要区分清楚沉浸式状态栏与变色状态栏。
沉浸式状态栏指的是,状态栏隐藏,在手指做了相关操作后,状态栏显示出来,例如视频播放器,在播放视频时是隐藏状态栏的,但是点击屏幕的时候,状态栏会显示出来,再例如文本阅读器,在阅读的时候是全屏的,然后从屏幕上方下滑或者下方上划,虚拟键和状态栏出现了,但却是直接覆盖在程序文字上的,这是所谓的沉浸式状态栏。
那么大家平时所说的状态栏与导航栏颜色相同,或者透明,指的是变色状态栏,或者透明状态栏。
对于这两个概念的理解,大家可以参考http://www.androidchina.net/3520.html。
v19(4.4)以后开始支持android:windowTranslucentStatus属性,透明状态栏,而v21(5.0)以后出现变色状态栏,可以自由设置状态栏颜色。
通过这两个新特性,可以帮助我们快速的实现4.4以后的状态栏与app的导航栏颜色相同。
实现变色导航栏主要是通过styles里面的theme来实现的:
<resources>
<style name="AppTheme.Base" parent="Theme.AppCompat.Light">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="BaseAppTheme" parent="AppTheme.Base">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<!-- Base application theme. -->
<style name="AppTheme" parent="BaseAppTheme"/>
</resources>
首先,在 “values\\styles.xml” 中定义一个最基础的theme,AppTheme.Base,该主题继承于AppCompat.Light主题,因为本例子中使用了toolbar(谷歌已经建议用toolbar取代actionbar),因此该主题的主要目的是用于隐藏自带的actionBar,以及设置不显示title。
<style name="AppTheme.Base" parent="Theme.AppCompat.Light">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
接下来定义主题BaseAppTheme,继承于上面定义的AppTheme.Base主题,该主题定义了三个颜色,分别指定状态栏、toolbar和页面中重点控件的颜色(颜色自己去定义)。
<style name="BaseAppTheme" parent="AppTheme.Base">
<item name="colorPrimary">@color/colorPrimary</item> <!-- 状态栏 -->
<item name="colorPrimaryDark">@color/colorPrimaryDark</item> <!-- toolbar -->
<item name="colorAccent">@color/colorAccent</item> <!-- 重点 -->
</style>
对于AppCompat主题中,各个颜色属性的含义,可以参考下图
然后定义一个AppTheme,继承于BaseAppTheme,
<style name="AppTheme" parent="BaseAppTheme"/>
在AndroidManifest.xml里application标签下设置主题 android:theme="@style/AppTheme"
到此,对于4.4以下的系统,会使用values\\styles.xml中的AppTheme主题,那么在4.4跟5.0这两个系统下,我们要做以下的处理。
4.4:新建“values-v19\\styles.xml”
在里面定义适用与4.4系统的AppTheme,在4.4系统中提出的是透明状态栏,因此这里我们定义一个AppTheme继承于BaseAppTheme,其中只要实现透明状态栏,代码如下:
<style name="AppTheme" parent="BaseAppTheme">
<item name="android:windowTranslucentStatus">true</item>
</style>
5.0:新建“values-v21\\styles.xml”
在里面定义适用与5.0系统的AppTheme,在5.0系统中提出的变色状态栏,因此这里我们只需定义一个AppTheme继承于BaseAppTheme代码如下:
<style name="AppTheme" parent="BaseAppTheme"/>
注意在布局文件中要设置如下属性,根据其字面意思,理解为,是否适应系统窗口,当设为true的时候,适应系统窗口,布局时会考虑状态栏的存在;如果设为false,则不考虑状态栏的存在,全屏显示,状态栏出现在布局上层,可参考下面效果图。
android:fitsSystemWindows=”true”
设为true:
设为false:
完成以上设置以后,就可以达到在4.4系统以上自定义状态栏、导航栏等颜色的目的。
状态栏透明
上面研究的是状态栏与导航栏颜色的设置,那么如何实现上图所示的,状态栏、导航栏透明,背景图片全屏显示的呢?
按道理想,既然可以设导航栏的颜色,那么我直接把颜色设成透明色,是不是就可以了呢?
答案是,正解~
不过,还是要处理一些特殊情况。
首先,我们把styles中的颜色设为透明,然后在主页面根布局下,设置一个背景图和设置 android:fitsSystemWindows=”true” 属性
<style name="BaseAppTheme" parent="AppTheme.Base">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/transparence</item> <!-- 状态栏 -->
<item name="colorPrimaryDark">@color/transparence</item> <!-- toolbar -->
<item name="colorAccent">@color/colorAccent</item> <!-- 重点 -->
</style>
运行的结果是,在4.4系统上,完全正常显示,而在5.0上,toolbar正常显示了透明色,但是状态栏显示的是灰色透明色
4.4系统:
5.0系统:
原因应该是,4.4系统支持的就是透明状态栏,所以只需要将状态栏颜色设为透明,即可到达效果。
而5.0支持的是变色状态栏,得到的效果与我们预期不同,特做如下处理:
在代码中设置,判断当sdk大于等于5.0时,执行以下代码
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
运行后,在4.4以及5.0系统上都能实现透明效果了,效果图如下:
以上是关于android为啥透明不能全屏?如何将状态栏给隐藏起来。的主要内容,如果未能解决你的问题,请参考以下文章