Android 系统UI状态栏设置

上XX天,从头开始学习Android,讲到设置Theme,这次作为上次的延续;来搞系统UI元素

<!--无导航栏 -->
<item name="windowActionBar">false</item>
<!--无标题栏 -->
<item name="windowNoTitle">true</item>
<!--全屏-->
<item name="android:windowFullscreen">true</item>

Java代码设置:
在onCreate中设置

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //ACTION_BAR的动态设置需要Android 4.1以上版本
        //FEATURE_ACTION_BAR_OVERLAY页面变化不会影响Actvity内容,否则会内容也跟着变化
    requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
        setContentView(R.layout.activity_main);
        ....

view中设置:

  public void toggle(View v) {
        Log.d(TAG, v.toString());
        //---start设置传说中的熄灯模式夜间模式
        int curentV = v.getSystemUiVisibility();
        int newV;
        if ((curentV & View.SYSTEM_UI_FLAG_LOW_PROFILE) == View.SYSTEM_UI_FLAG_LOW_PROFILE) {
            newV = View.SYSTEM_UI_FLAG_VISIBLE;
        } else {
            newV = View.SYSTEM_UI_FLAG_LOW_PROFILE;
        }
        v.setSystemUiVisibility(newV);//熄灯模式
        //--end

//        v.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);//隐藏导航控件
        v.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_FULLSCREEN);//隐藏系统元素时不移动应用的布局
//        v.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);//全屏
    }

Android 4.4 API 19引入透明状态栏,透明导航栏

<!--透明状态栏 -->
 <item name="android:windowTranslucentStatus">true</item>
 <!--透明导航栏-->
 <item name="android:windowTranslucentNavigation">true</item>

在res/values-v19/styles.xml 的给主题设置上上述两个属性就可以实现透明状态栏和导航栏
在API21 Android给了更多地状态栏的设置,如

 <item name="android:windowDrawsSystemBarBackgrounds">true</item>
 <item name="android:statusBarColor">@android:color/transparent</item>

后记:
在我试着使用toggle设置系统UI时, 因为我的代码中又EditText输入弹出软键盘,我点击按钮调用toggle时,是没有效果. 隐藏了输入法效果才会出现.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android修改SystemUI状态栏需要进行以下步骤: 1. 获取修改状态栏的权限:在AndroidManifest.xml文件中添加以下代码: ```xml <uses-permission android:name="android.permission.EXPAND_STATUS_BAR" /> ``` 2. 创建自定义SystemUI布局:在res目录下创建一个xml布局文件,例如custom_status_bar_layout.xml,用于自定义状态栏的样式和内容。 3. 创建一个Service类并继承自StatusBarService:在该Service类的onCreate()方法中调用super.onCreate()来初始化状态栏。 4. 在Service类中重写createStatusBarView()方法,并在其中加载自定义SystemUI布局文件: ```java @Override public View createStatusBarView() { LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); return inflater.inflate(R.layout.custom_status_bar_layout, null); } ``` 5. 创建一个BroadcastReceiver类用于接收系统广播消息:在该类中重写onReceive()方法,监听状态栏相关的广播消息。 6. 在BroadcastReceiver类的onReceive()方法中处理状态栏相关的广播消息,比如接收到通知栏展开折叠的消息时,可以通过调用下面的代码实现状态栏展开/折叠: ```java Object statusBarService = getSystemService("statusbar"); Class<?> statusBarManagerClazz = Class.forName("android.app.StatusBarManager"); Method expandMethod = statusBarManagerClazz.getMethod("expandNotificationsPanel"); expandMethod.invoke(statusBarService); ``` 7. 在AndroidManifest.xml文件中注册Service和BroadcastReceiver类。 以上是Android修改SystemUI状态栏的基本步骤,根据具体需求可以进行更多的自定义操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值