android 动态显示和隐藏状态栏

View类提供了setSystemUiVisibility和getSystemUiVisibility方法,这两个方法实现对状态栏的动态显示或隐藏的操作,以及获取状态栏当前可见性。

setSystemUiVisibility(int visibility)方法可传入的实参为:

1. View.SYSTEM_UI_FLAG_VISIBLE:显示状态栏,Activity不全屏显示(恢复到有状态的正常情况)。

2. View.INVISIBLE:隐藏状态栏,同时Activity会伸展全屏显示。

3. View.SYSTEM_UI_FLAG_FULLSCREEN:Activity全屏显示,且状态栏被隐藏覆盖掉。

4. View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:Activity全屏显示,但状态栏不会被隐藏覆盖,状态栏依然可见,Activity顶端布局部分会被状态遮住。

5. View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

6. View.SYSTEM_UI_LAYOUT_FLAGS:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

7. View.SYSTEM_UI_FLAG_HIDE_NAVIGATION:隐藏虚拟按键(导航栏)。有些手机会用虚拟按键来代替物理按键。

8. View.SYSTEM_UI_FLAG_LOW_PROFILE:状态栏显示处于低能显示状态(low profile模式),状态栏上一些图标显示会被隐藏。

下面将以一个demo来验证view的setSystemUiVisibility(int visibility)方法实现动态操作状态栏:

1.MainActivity代码如下:

[java] view plaincopy

  1. package com.example.handlestatusbar;
  2. import android.annotation.SuppressLint;
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5. import android.view.Menu;
  6. import android.view.MenuItem;
  7. import android.view.View;
  8. import android.view.View.OnClickListener;
  9. import android.widget.Button;
  10. import android.widget.RelativeLayout;
  11. import android.widget.Toast;
  12. @SuppressLint("NewApi")
  13. public class MainActivity extends Activity implements OnClickListener
  14. {
  15. private RelativeLayout mRLayout;
  16. private Button mBtn1, mBtn2, mBtn3, mBtn4, mBtn5, mBtn6, mBtn7, mBtn8;
  17. @Override
  18. protected void onCreate(Bundle savedInstanceState)
  19. {
  20. super.onCreate(savedInstanceState);
  21. setContentView(R.layout.main);
  22. mRLayout = (RelativeLayout)findViewById(R.id.content);
  23. mBtn1 = (Button)findViewById(R.id.btn1);
  24. mBtn2 = (Button)findViewById(R.id.btn2);
  25. mBtn3 = (Button)findViewById(R.id.btn3);
  26. mBtn4 = (Button)findViewById(R.id.btn4);
  27. mBtn5 = (Button)findViewById(R.id.btn5);
  28. mBtn6 = (Button)findViewById(R.id.btn6);
  29. mBtn7 = (Button)findViewById(R.id.btn7);
  30. mBtn8 = (Button)findViewById(R.id.btn8);
  31. mBtn1.setOnClickListener(this);
  32. mBtn2.setOnClickListener(this);
  33. mBtn3.setOnClickListener(this);
  34. mBtn4.setOnClickListener(this);
  35. mBtn5.setOnClickListener(this);
  36. mBtn6.setOnClickListener(this);
  37. mBtn7.setOnClickListener(this);
  38. mBtn8.setOnClickListener(this);
  39. }
  40. @Override
  41. public void onClick(View v)
  42. {
  43. // TODO Auto-generated method stub
  44. switch (v.getId())
  45. {
  46. case R.id.btn1:
  47. //显示状态栏,Activity不全屏显示(恢复到有状态的正常情况)
  48. mRLayout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
  49. break;
  50. case R.id.btn2:
  51. //隐藏状态栏,同时Activity会伸展全屏显示
  52. mRLayout.setSystemUiVisibility(View.INVISIBLE);
  53. break;
  54. case R.id.btn3:
  55. //Activity全屏显示,且状态栏被隐藏覆盖掉。
  56. mRLayout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
  57. break;
  58. case R.id.btn4:
  59. //Activity全屏显示,但状态栏不会被隐藏覆盖,状态栏依然可见,Activity顶端布局部分会被状态遮住
  60. mRLayout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
  61. break;
  62. case R.id.btn5:
  63. //同mRLayout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
  64. mRLayout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
  65. break;
  66. case R.id.btn6:
  67. //同mRLayout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
  68. mRLayout.setSystemUiVisibility(View.SYSTEM_UI_LAYOUT_FLAGS);
  69. break;
  70. case R.id.btn7:
  71. //隐藏虚拟按键(导航栏)
  72. mRLayout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
  73. break;
  74. case R.id.btn8:
  75. //状态栏显示处于低能显示状态(low profile模式),状态栏上一些图标显示会被隐藏。
  76. mRLayout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
  77. break;
  78. }
  79. }
  80. }

2.布局文件main.xml文件的代码如下:

[html] view plaincopy

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. tools:context=".MainActivity"
  6. android:id="@+id/content">
  7. <LinearLayout
  8. android:orientation="vertical"
  9. android:layout_width="match_parent"
  10. android:layout_height="match_parent">
  11. <Button
  12. android:id="@+id/btn1"
  13. android:layout_width="fill_parent"
  14. android:layout_height="wrap_content"
  15. android:text="@string/s1"/>
  16. <Button
  17. android:id="@+id/btn2"
  18. android:layout_width="fill_parent"
  19. android:layout_height="wrap_content"
  20. android:text="@string/s2"/>
  21. <Button
  22. android:id="@+id/btn3"
  23. android:layout_width="fill_parent"
  24. android:layout_height="wrap_content"
  25. android:text="@string/s3"/>
  26. <Button
  27. android:id="@+id/btn4"
  28. android:layout_width="fill_parent"
  29. android:layout_height="wrap_content"
  30. android:text="@string/s4"/>
  31. <Button
  32. android:id="@+id/btn5"
  33. android:layout_width="fill_parent"
  34. android:layout_height="wrap_content"
  35. android:text="@string/s5"/>
  36. <Button
  37. android:id="@+id/btn6"
  38. android:layout_width="fill_parent"
  39. android:layout_height="wrap_content"
  40. android:text="@string/s6"/>
  41. <Button
  42. android:id="@+id/btn7"
  43. android:layout_width="fill_parent"
  44. android:layout_height="wrap_content"
  45. android:text="@string/s7"/>
  46. <Button
  47. android:id="@+id/btn8"
  48. android:layout_width="fill_parent"
  49. android:layout_height="wrap_content"
  50. android:text="@string/s8"/>
  51. </LinearLayout>
  52. </RelativeLayout>

3.string.xml文件代码如下:

[html] view plaincopy

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <resources>
  3. <string name="app_name">HandleStatusBar</string>
  4. <string name="hello_world">Hello world!</string>
  5. <string name="menu_settings">Settings</string>
  6. <string name="s1">SYSTEM_UI_FLAG_VISIBLE</string>
  7. <string name="s2">INVISIBLE</string>
  8. <string name="s3">SYSTEM_UI_FLAG_FULLSCREEN</string>
  9. <string name="s4">SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN</string>
  10. <string name="s5">SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION</string>
  11. <string name="s6">SYSTEM_UI_LAYOUT_FLAGS</string>
  12. <string name="s7">SYSTEM_UI_FLAG_HIDE_NAVIGATION</string>
  13. <string name="s8">SYSTEM_UI_FLAG_LOW_PROFILE</string>
  14. </resources>
时间: 2024-10-11 22:54:49

android 动态显示和隐藏状态栏的相关文章

通过onWindowAttributesChanged和onSystemUiVisibilityChange监听状态栏页面的隐藏与显示、动态显示与隐藏状态栏

最近添加系统功能需要监听状态栏的隐藏与显示,小小研究了下结合资料做下总结: 首先我用这个WindowAttributesChanged方法来监听视频播放页面状态栏的隐藏与显示,通过打印getWindow().getAttributes().flags,获取页面属性,从而来判断状态栏的显示与隐藏,可正常监听! @Override public void onWindowAttributesChanged(LayoutParams params) { super.onWindowAttributes

动态显示和隐藏状态栏(包括底部虚拟按键)

小米Launcher有一个细节上的功能效果:在长按桌面应用图标时,会隐藏状态栏,然后在状态栏原有的布局上显示卸载或删除的操作栏.放手后,操作栏隐藏,状态栏显示出来.也就是说,这个过程是涉及到对状态栏的动态操作的. View类提供了setSystemUiVisibility和getSystemUiVisibility方法,这两个方法实现对状态栏的动态显示或隐藏的操作,以及获取状态栏当前可见性. setSystemUiVisibility(int visibility)方法可传入的实参为: 1. V

android启动画面隐藏状态栏全屏显示

1.在根部局给一个id,然后直接设置就行了layout.setSystemUiVisibility(View.INVISIBLE); 状态栏就没有了. 2.如果你只是想改变状态栏颜色的也可以 //5.0以前这样 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT&&Build.VERSION.SDK_INT<Build.VERSION_CODES.LOLLIPOP) { setTranslucentStatus(tru

Android 动态显示和隐藏软键盘

** * 动态设置软盘的显示和隐藏 * @author JPH */ public class MainActivity extends Activity implements OnClickListener { private InputMethodManager inputMethodManager; private Timer timer; private EditText edit; @Override protected void onCreate(Bundle savedInstan

Android隐藏状态栏、导航栏

Android隐藏状态栏.导航栏 [java] view plain copy private void hideStatusNavigationBar(){ if(Build.VERSION.SDK_INT<16){ this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); }else{ int uiFlags = View

Android隐藏状态栏和标题栏,相当于全屏效果

隐藏标题栏需要使用预定义样式:android:theme=”@android:style/Theme.NoTitleBar”. 隐藏状态栏:android:theme=”@android:style/Theme.NoTitleBar.Fullscreen”.

Android实现隐藏状态栏和标题栏

隐藏标题栏需要使用预定义样式:android:theme=”@android:style/Theme.NoTitleBar”. 隐藏状态栏:android:theme=”@android:style/Theme.NoTitleBar.Fullscreen”. <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/

Android 实现沉浸式状态栏

上一篇文章将Android 实现变色状态栏我们实现了变色的状态栏,也介绍了沉浸式状态栏和透明状态栏的区别,这篇文章我们实现沉浸式状态栏. 沉浸式状态栏的来源就是很多手机用的是实体按键,没有虚拟键,于是开了沉浸模式就只有状态栏消失了.于是沉浸模式成了沉浸式状态栏. 我们先来看下具体的效果 开启沉浸模式后,状态栏消失,从顶部向下滑动,状态栏出现,退出沉浸模式,状态栏也出现了. 我们的代码基于前一篇文章.首先是两个开启沉浸模式和关闭沉浸模式的函数 @SuppressLint("NewApi"

android 去掉actionbar 隐藏标题栏 全屏

去掉actionbar :getActionBar().hide(); 全屏方法一: <activity            android:name="com.imax.weather.MainActivity"            android:label="@string/app_name"            android:screenOrientation="portrait"            android:th