android 下拉状态栏(SystemUI)常见修改记录
- 摘要:下拉状态栏:1.下拉状态栏的亮度条:frameworks/base/packages/SystemUI/src/com/android/systemui/qs/QSPanel.javamBrightnessView对应布局文件:quick_settings_brightness_dialog.xml2.滑动亮度条后过渡到桌面的亮度条frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phon
下拉状态栏:
1.下拉状态栏的亮度条:
frameworks/base/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
mBrightnessView
对应布局文件:quick_settings_brightness_dialog.xml
2.滑动亮度条后过渡到桌面的亮度条
frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
protected void inflateStatusBarWindow(Context context) { mStatusBarWindow = (StatusBarWindowView) View.inflate(context, R.layout.super_status_bar, null); }
mStatusBarWindow
对应布局文件:super_status_bar.xml
布局文件中对应项:<includelayout="@layout/brightness_mirror" />
3.亮度条中的滑动条样式修改
frameworks/base/packages/SystemUI/src/com/android/systemui/settings/ToggleSlider.java
布局文件:status_bar_toggle_slider.xml
4.下拉状态栏的图标块
有两处
/frameworks/base/packages/SystemUI/src/com/android/systemui/qs/tiles/***Tile.java
对应的Vector矢量图文件命名为ic_qs_xxx.xml
AirplaneModeTile:飞行模式,默认有动画的。用图片替换要把动画在代码中注释掉。
BatteryTile:电池。用BatteryMeterDrawable自定义view画出来的。
BluetoothTile:蓝牙
CastTile:投射
CellularTile:移动数据网络,无sim卡
ColorInversionTile:反色
DataSaverTile:流量节省程序
DataUsageDetailView:默认没显示,数据使用细节
DndTile:勿扰donot disturb
FlashlightTile:手电筒
HotspotTile:热点
IntentTile:默认没显示,不知道长啥样
LocationTile:位置信息
RotationLockTile:自动旋转,纵向
ScreenShotTile:截图
UserDetailItemView:默认没显示,不知道长啥样
UserDetailView:默认没显示,不知道长啥样
UserTile:默认没显示,不知道长啥样
WifiTile:Wlan
WorkModeTile:默认没显示,不知道长啥样
还有MTK的
/frameworks/base/packages/SystemUI/src/com/mediatek/systemui/qs/tiles/***Tile.java
HotKnotTile
ApnSettingsTile
DualSimSettingsTile
MobileDataTile
QsIconWrapper
SimDataConnectionTile
5.增删下拉状态栏的图标块
frameworks/base/packages/SystemUI/res/values/config.xml中修改
<!--The default tiles to display in QuickSettings --> <!--M: add hotknot tile --> <stringname="quick_settings_tiles_default" translatable="false"> wifi,cell,battery,dnd,flashlight,rotation,bt,airplane,location,hotknot,screenshot </string>
6.WLAN图标块点击后信号强度
frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessPointControllerImpl.java
private static final int[] ICONS = { R.drawable.ic_qs_wifi_full_0, R.drawable.ic_qs_wifi_full_1, R.drawable.ic_qs_wifi_full_2, R.drawable.ic_qs_wifi_full_3, R.drawable.ic_qs_wifi_full_4, };
7.修改手机信号强度图
frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java
static final int[][] QS_TELEPHONY_SIGNAL_STRENGTH = { { R.drawable.ic_qs_signal_0, R.drawable.ic_qs_signal_1, R.drawable.ic_qs_signal_2, R.drawable.ic_qs_signal_3, R.drawable.ic_qs_signal_4 }, { R.drawable.ic_qs_signal_full_0, R.drawable.ic_qs_signal_full_1, R.drawable.ic_qs_signal_full_2, R.drawable.ic_qs_signal_full_3, R.drawable.ic_qs_signal_full_4 } };
8.单条通知栏ui修改
修改两个位置:
位置1:
frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java
protectedvoid onFinishInflate() {}中
修改下面两句
mBackgroundNormal.setCustomBackground
mBackgroundDimmed.setCustomBackground
同时让下面两个方法为空
privatevoid updateOutlineAlpha() {}
publicvoid setFakeShadowIntensity(float shadowIntensity, floatoutlineAlpha, int shadowYEnd,
intoutlineTranslation) {}
位置2:
frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
这个是个ViewGroup,它在onDraw里面还画了次背景。需要干掉这个背景。
让下面这个方法为空。
privatevoid updateBackground() {}
protectedvoid onDraw(Canvas canvas) {}中注销掉下面这句
canvas.drawRect(0,mCurrentBounds.top, getWidth(), mCurrentBounds.bottom,mBackgroundPaint);
修改后效果:
9.多条通知栏的背景修改
frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView
默认背景就是当前界面截图加了个黑色透明度。
这个要谨改,因为会影响到按下power键唤醒屏幕时候的锁屏。如果把背景设成黑色,可能power键唤醒屏幕后,多条通知栏的背景是黑的。
10.删除修改显示布局边界,GPU呈现模式分析,Nearby
GPU呈现模式分析,显示布局边界都是packages/apps/Settings中的
在AndroidManifest.xml中可以找到
<service android:name=".qstile.DevelopmentTiles$ShowLayout" android:label="@string/debug_layout" android:icon="@drawable/tile_icon_show_layout" android:permission="android.permission.BIND_QUICK_SETTINGS_TILE" android:enabled="false"> <intent-filter> <action android:name="android.service.quicksettings.action.QS_TILE" /> </intent-filter> </service> <service android:name=".qstile.DevelopmentTiles$GPUProfiling" android:label="@string/track_frame_time" android:icon="@drawable/tile_icon_graphics" android:permission="android.permission.BIND_QUICK_SETTINGS_TILE" android:enabled="false"> <intent-filter> <action android:name="android.service.quicksettings.action.QS_TILE" /> </intent-filter> </service>
label对应的string在framework/base/packages/SettingsLib中
icon对应的drawable在packages/apps/Settings中
packages/apps/Settings/src/com/android/settings/qstile/DevelopmentTiles.java
Nearby是谷歌的玩意,修改的话也能修改,就是加判定在TileQueryHelper.java中修改,当然上面的
GPU呈现模式分析,显示布局边界也可以这么修改。只不过不建议用这种方式修改。
删除这三个东西:
frameworks/base/packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java
中
private class QueryTilesTask extends AsyncTask<Collection<QSTile<?>>, Void, Collection<TileInfo>> {}doInBackground{}中List<ResolveInfo> services = pm.queryIntentServicesAsUser( new Intent(TileService.ACTION_QS_TILE), 0, ActivityManager.getCurrentUser()); 这句修改为//lqp //List<ResolveInfo> services = pm.queryIntentServicesAsUser( // new Intent(TileService.ACTION_QS_TILE), 0, ActivityManager.getCurrentUser()); List<ResolveInfo> services = new ArrayList<ResolveInfo>();
11.为原生android下拉状态栏新增自动调节亮度开关
alps/device/mediatek/mt6735/bird.mk
alps/frameworks/base/packages/SystemUI/bird/res/layout/ui_icon_qs_brightness_dialog.xml
alps/frameworks/base/packages/SystemUI/bird/res/values-zh-rCN/strings.xml
alps/frameworks/base/packages/SystemUI/bird/res/values/strings.xml
alps/frameworks/base/packages/SystemUI/bird/src/com/bird/systemui/BirdFeatureOption.java
alps/frameworks/base/packages/SystemUI/res/layout/quick_settings_brightness_dialog.xml
alps/frameworks/base/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
.../base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
alps/packages/apps/Settings/src/com/android/settings/DisplaySettings.java
三个地方需要同步,设置中的显示DisplaySettings.下拉状态栏的图标处QSPanel,点击滑条后的PhoneStatusBar。
如何同步? 使用观察者模式。
在Switch进行操作后需要变更Settings.System.SCREEN_BRIGHTNESS_MODE值。在值变化后Switch控件状态需要同步变化。
QSPanel.java中代码:
//liuqipeng add 20170619 BUG #26165 import android.widget.CompoundButton; import android.widget.ToggleButton; import android.widget.Switch; import android.provider.Settings; import android.widget.CompoundButton.OnCheckedChangeListener; import android.database.ContentObserver; import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE; import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC; import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL; //liuqipeng end 20170619 public QSPanel(Context context, AttributeSet attrs) {//liuqipeng add 20170619 BUG #26165 if(BirdFeatureOption.BIRD_SHOW_AUTO_BRIGHT_SWITCH){ View mAutoBrightRl=findViewById(R.id.auto_bright_rl); mAutoBrightRl.setVisibility(View.VISIBLE); Switch mAutoBright=(Switch)findViewById(R.id.auto_bright_switch); int brightnessMode = Settings.System.getInt(context.getContentResolver(), SCREEN_BRIGHTNESS_MODE, SCREEN_BRIGHTNESS_MODE_MANUAL); mAutoBright.setChecked(brightnessMode != SCREEN_BRIGHTNESS_MODE_MANUAL); mAutoBright.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { Settings.System.putInt(context.getContentResolver(), SCREEN_BRIGHTNESS_MODE, isChecked ? SCREEN_BRIGHTNESS_MODE_AUTOMATIC : SCREEN_BRIGHTNESS_MODE_MANUAL); } }); ContentObserver BrightnessMode = new ContentObserver(new Handler()) { @Override public void onChange(boolean selfChange) { super.onChange(selfChange); int brightnessMode = Settings.System.getInt(context.getContentResolver(), SCREEN_BRIGHTNESS_MODE, SCREEN_BRIGHTNESS_MODE_MANUAL); mAutoBright.setChecked(brightnessMode != SCREEN_BRIGHTNESS_MODE_MANUAL); } }; context.getContentResolver().registerContentObserver(Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS_MODE),true, BrightnessMode); } }//liuqipeng end 20170619
android 下拉状态栏(SystemUI)常见修改记录相关推荐
- Android下拉状态栏图标错了,小米手机怎么改状态栏的图标,并且把下拉的状态栏弄透明...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 辅助很难,没有钱出装备,穷的不像样.你在想是先出破败在出无尽呢的时候,辅助却在想,这局我能有4000金币不?买个五速鞋 买个眼石 然后出个400 就会说! ...
- Android系统定制-SystemUI-控制下拉状态栏快捷设置的下拉与关闭(通过按键控制)
一.需求场景 Android 下拉状态栏快捷设置的下拉与关闭标准设计是通过我们手指触摸去滑动顶部状态栏,但有些场景,我们可能需要通过app或者某些按键去控制,这个时候我们就需要了解下拉状态栏快捷设置的 ...
- Android 9.0 SystemUI 下拉状态栏快捷开关
SystemUI 下拉状态栏快捷开关是 QSPanel,qs_panel.xml,@+id/quick_settings_panel,本篇文章就来看看这些快捷开关是如何呈现的以及如何新增一个快捷开关? ...
- Android 10.0 SystemUI下拉状态栏时间格式的修改(一)
在原生的下拉状态栏时间格式为 某月某日周几 这样的格式 客户需要修改为年月日周几 某时某分这种格式 这就需要修改 显示时间的格式 在更新时间时 按照这个格式更新就可以了 首选来看 时间控件的布局文件q ...
- Android 10.0 SystemUI下拉状态栏UI定制化开发系列(一)
1.概述 10.0定制化开发中,由于客户需求要求对整个SystemUI下拉状态栏和下拉通知栏部分的UI做定制,所以需要修改整个下拉状态栏的 UI布局页面,这要求对整个NotificationPanel ...
- Android 10 状态栏通知图标和下拉状态栏图标为白色问题
前言 安装第三方应用,会在状态栏上面和下拉状态栏通知图标显示白色 原因 因为google在android5.0上面做了限制,为了统一系统风格.之后的状态栏icon就不能够随便用一张色彩丰富的图片了,只 ...
- 9.0自定义SystemUI下拉状态栏和通知栏视图(十七)之自定义通知布局构建
1.前言 在进行9.0的rom产品定制化开发中,在9.0中针对systemui下拉状态栏和通知栏的定制UI的工作开发中,原生系统的下拉状态栏和通知栏的视图UI在产品开发中会不太满足功能, 所以根据产品 ...
- 10.0 自定义SystemUI下拉状态栏和通知栏视图(八)之锁屏通知布局
1.前言 在进行10.0的系统rom产品定制化开发中,在10.0中针对systemui下拉状态栏和通知栏的定制UI的工作开发中,原生系统的下拉状态栏和通知栏的视图UI在产品开发中会不太满足功能, 所以 ...
- 12.0 自定义SystemUI下拉状态栏和通知栏视图(二十)之锁屏通知布局
1.前言 在进行12.0的系统rom产品定制化开发中,在12.0中针对systemui下拉状态栏和通知栏的定制UI的工作开发中,原生系统的下拉状态栏和通知栏的视图UI在产品开发中会不太满足功能, 所以 ...
- Android 4.2 禁止下拉状态栏
最近在做一个界面需要禁止下拉状态栏,于是整理了一下,以后备用. import android.app.StatusBarManager;//首先导入包 StatusBarManager mStatus ...
最新文章
- 杭电2028--Lowest Common Multiple Plus
- 一个App完成入门篇(一)-从Hello world开始
- linux 截取后缀名,Shell 截取文件名和后缀
- 常用DBA SQL[转]
- Tomcat安装及配置教程(超详细的图文教程)(亲测)
- Packt和Java Code Geeks提供的$ 5 Java编程书籍!
- 扫一扫闪退的可能性之一[wex5开发]
- C++ 标准库 —— random
- paip.asp 项目流程及管理工具总结
- linux 下ssh下载文件命令
- 【Python】py3.6请求网站时报错:http.client.RemoteDisconnected: Remote end closed connection without response
- java syn包_TCP攻击之SYN攻击
- 打怪升级之小白的大数据之旅(六十九)<Hive旅程第十站:Hive的优化>
- kali-top10-Nmap
- 品优购项目笔记(十四):微信支付
- 如何解决笔记本电脑不接电源自动断网的问题?
- SAP云上自适应跨可用区高可用方案
- gdb插件peda、gef、Pwndbg安装
- python有趣小程序代码,简单的小程序代码
- 解决git commit提示Please tell me who you are