Android SystemUI相关定制(一)

一、顶部状态栏

1、隐藏右上角状态栏导航电量图标

SystemUI/src/com/android/systemui/BatteryMeterView.java

重写setVisibility()方法达到隐藏电量图标的效果

 -------------------------------------------------------------------------------------------------------------------------------

2、隐藏下拉菜单中图标

  如图:隐藏电池图标

SystemUI/res/values/config.xml

  -------------------------------------------------------------------------------------------------------------------------------

3、修改下拉框快捷功能栏列数

   修改quick_settings_num_columns数值

<integer name="quick_settings_num_columns">6</integer>   
路径为:Framework/base/package/SystemUI/res/values-land/dimes.xml
Framework/base/package/SystemUI/res/values-w550dp-land/dimes.xml

 -------------------------------------------------------------------------------------------------------------------------------

4、隐藏下拉框快捷功能

在config.xml中修改quick_settings_tiles_default

Framework/base/package/SystemUI/res/value/config.xml

注意:quick_settings_tiles_default值减少时,有缓存影响,需要重置设备

-------------------------------------------------------------------------------------------------------------------------------

  5、下拉框添加快捷开关

(1)在config.xml中的quick_settings_tiles_default(有顺序)和quick_settings_tiles_stock(无顺序)添加新选项 

frameworks\base\packages\SystemUI\res\values\config.xml 

(2)新建一个自己的Tile

在O的Settings中添加新项时,需要重写getMetricsCategory

@Override  
 public int getMetricsCategory() { 
       return MetricsEvent.LED_BRIGHTNESS_LEVEL;    }

这个LED_BRIGHTNESS_LEVEL的定义在frameworks\base\proto\src\metrics_constants.proto

需要往后翻到预留的位置添加新的ID  LED_BRIGHTNESS_LEVEL = 1146;

(3) getMetricsCategory()一定要添加一个返回字段,否则当你把QS全部下滑会crash。MetricsEvent在

frameworks\base\proto\src\metrics_constants.proto中定义的字段,编译完成后会在这生成

out\target\common\obj\JAVA_LIBRARIES\framework-protos_intermediates\src\proto\src\com\android\internal\logging\MetricsProto.java(不要修改这个文件,编译后会自动修改,把你添加的字段自动加上)。如果编译失败,会提示你删除一些东西什么的,直接把out\target\common\obj目录全部删除再编译,或者clean后build。添加完成后记得在引用的地方要导入com.android.internal.logging.MetricsProto.MetricsEvent;

(4)引用自己的Tile

frameworks\base\packages\SystemUI\src\com\android\systemui\qs\tileimpl\QSFactoryImpl.java会加载所有的Tile,我们只需要把我们自定义的TestTile添加进去就可以了。

例如:else if (tileSpec.equals("moresettings")) return new MoreSettingsTile(mHost);

注意:"moresettings"一定要和第一步中添加的名称一样

-------------------------------------------------------------------------------------------------------------------------------

  5、去掉下拉框收缩界面

frameworks\base\packages\SystemUI\src\com\android\systemui\qs\QSFragment.java中的setQsExpansion方法,

 


                
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android中,如果想要自定义下拉通知栏的颜色,可以通过修改SystemUI相关设置来实现。 首先,为了修改SystemUI的颜色,需要获取相应的权限。我们可以在AndroidManifest.xml文件中添加如下代码: ```xml <uses-permission android:name="android.permission.STATUS_BAR"/> ``` 接下来,在我们的项目中创建一个名为values的文件夹,并在其中创建一个名为colors.xml的文件。在这个文件中,我们可以定义我们想要使用的颜色。例如,我们可以定义一个名为notification_background的颜色,用于设置下拉通知栏的背景颜色。代码如下: ```xml <resources> <color name="notification_background">#FF0000</color> </resources> ``` 然后,我们需要修改SystemUI的源代码,以更新背景颜色。具体来说,我们需要找到StatusBar类中的updateResources方法,并在该方法中添加以下代码: ```java Context context = mContext.createPackageContext("com.example.notificationtest", Context.CONTEXT_IGNORE_SECURITY); // 替换为自己的包名 int color = context.getResources().getColor(R.color.notification_background); mBackgroundView.setBackgroundColor(color); ``` 最后,我们需要重新编译并安装我们的应用程序。一旦安装完成,我们就可以看到下拉通知栏的背景颜色已经根据我们在colors.xml中定义的颜色进行了自定义。 以上是通过修改SystemUI的方式来自定义下拉通知栏的颜色。请注意,这种方式需要具备系统级权限,因此只适用于特定的Android设备。在实际开发中,请确保在使用这种方式之前了解并遵守相关的法规和政策,以避免违规行为。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值