• 摘要:下拉状态栏: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)常见修改记录相关推荐

  1. Android下拉状态栏图标错了,小米手机怎么改状态栏的图标,并且把下拉的状态栏弄透明...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 辅助很难,没有钱出装备,穷的不像样.你在想是先出破败在出无尽呢的时候,辅助却在想,这局我能有4000金币不?买个五速鞋 买个眼石 然后出个400 就会说! ...

  2. Android系统定制-SystemUI-控制下拉状态栏快捷设置的下拉与关闭(通过按键控制)

    一.需求场景 Android 下拉状态栏快捷设置的下拉与关闭标准设计是通过我们手指触摸去滑动顶部状态栏,但有些场景,我们可能需要通过app或者某些按键去控制,这个时候我们就需要了解下拉状态栏快捷设置的 ...

  3. Android 9.0 SystemUI 下拉状态栏快捷开关

    SystemUI 下拉状态栏快捷开关是 QSPanel,qs_panel.xml,@+id/quick_settings_panel,本篇文章就来看看这些快捷开关是如何呈现的以及如何新增一个快捷开关? ...

  4. Android 10.0 SystemUI下拉状态栏时间格式的修改(一)

    在原生的下拉状态栏时间格式为 某月某日周几 这样的格式 客户需要修改为年月日周几 某时某分这种格式 这就需要修改 显示时间的格式 在更新时间时 按照这个格式更新就可以了 首选来看 时间控件的布局文件q ...

  5. Android 10.0 SystemUI下拉状态栏UI定制化开发系列(一)

    1.概述 10.0定制化开发中,由于客户需求要求对整个SystemUI下拉状态栏和下拉通知栏部分的UI做定制,所以需要修改整个下拉状态栏的 UI布局页面,这要求对整个NotificationPanel ...

  6. Android 10 状态栏通知图标和下拉状态栏图标为白色问题

    前言 安装第三方应用,会在状态栏上面和下拉状态栏通知图标显示白色 原因 因为google在android5.0上面做了限制,为了统一系统风格.之后的状态栏icon就不能够随便用一张色彩丰富的图片了,只 ...

  7. 9.0自定义SystemUI下拉状态栏和通知栏视图(十七)之自定义通知布局构建

    1.前言 在进行9.0的rom产品定制化开发中,在9.0中针对systemui下拉状态栏和通知栏的定制UI的工作开发中,原生系统的下拉状态栏和通知栏的视图UI在产品开发中会不太满足功能, 所以根据产品 ...

  8. 10.0 自定义SystemUI下拉状态栏和通知栏视图(八)之锁屏通知布局

    1.前言 在进行10.0的系统rom产品定制化开发中,在10.0中针对systemui下拉状态栏和通知栏的定制UI的工作开发中,原生系统的下拉状态栏和通知栏的视图UI在产品开发中会不太满足功能, 所以 ...

  9. 12.0 自定义SystemUI下拉状态栏和通知栏视图(二十)之锁屏通知布局

    1.前言 在进行12.0的系统rom产品定制化开发中,在12.0中针对systemui下拉状态栏和通知栏的定制UI的工作开发中,原生系统的下拉状态栏和通知栏的视图UI在产品开发中会不太满足功能, 所以 ...

  10. Android 4.2 禁止下拉状态栏

    最近在做一个界面需要禁止下拉状态栏,于是整理了一下,以后备用. import android.app.StatusBarManager;//首先导入包 StatusBarManager mStatus ...

最新文章

  1. 杭电2028--Lowest Common Multiple Plus
  2. 一个App完成入门篇(一)-从Hello world开始
  3. linux 截取后缀名,Shell 截取文件名和后缀
  4. 常用DBA SQL[转]
  5. Tomcat安装及配置教程(超详细的图文教程)(亲测)
  6. Packt和Java Code Geeks提供的$ 5 Java编程书籍!
  7. 扫一扫闪退的可能性之一[wex5开发]
  8. C++ 标准库 —— random
  9. paip.asp 项目流程及管理工具总结
  10. linux 下ssh下载文件命令
  11. 【Python】py3.6请求网站时报错:http.client.RemoteDisconnected: Remote end closed connection without response
  12. java syn包_TCP攻击之SYN攻击
  13. 打怪升级之小白的大数据之旅(六十九)<Hive旅程第十站:Hive的优化>
  14. kali-top10-Nmap
  15. 品优购项目笔记(十四):微信支付
  16. 如何解决笔记本电脑不接电源自动断网的问题?
  17. SAP云上自适应跨可用区高可用方案
  18. gdb插件peda、gef、Pwndbg安装
  19. python有趣小程序代码,简单的小程序代码
  20. 解决git commit提示Please tell me who you are

热门文章

  1. Java中RuntimeException和Exception区别
  2. CS架构客户端软件升级方案
  3. Redis的数据变成backup
  4. Debian10校准时间同步系统时间和硬件时间的方法
  5. android模拟器 菜单键,夜神安卓模拟器系统设置有哪些?
  6. QGIS二次开发01---临时绘制图层实现
  7. rq940服务器 经常自动重启,高端首选 联想ThinkServer RQ940服务器
  8. Bootstrap系列之折叠(Collapse)
  9. ubuntu 设置静态路由_Ubuntu添加静态路由
  10. (转)解析智能推荐系统开发中十大关键要素