下拉状态栏:

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

布局文件中对应项:

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中修改

wifi,cell,battery,dnd,flashlight,rotation,bt,airplane,location,hotknot,screenshot

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中可以找到

                                                                                                                 

label对应的stringframework/base/packages/SettingsLib

icon对应的drawablepackages/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>, Void, Collection> {}doInBackground{}中            List services = pm.queryIntentServicesAsUser(                     new Intent(TileService.ACTION_QS_TILE), 0, ActivityManager.getCurrentUser());这句修改为//lqp             //List services = pm.queryIntentServicesAsUser(                //     new Intent(TileService.ACTION_QS_TILE), 0, ActivityManager.getCurrentUser()); List services = new ArrayList(); 

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 20170619public 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



更多相关文章

  1. [置顶] Android开发之将Edittext输入弹出的软键盘设置搜索确定键
  2. android在.java中手写布局
  3. Android万能适配器Adapter
  4. android 自定义组合控件并实现点击事件
  5. Android学习笔记(九)
  6. DataBinding绑定android:onClick出错
  7. Android之ToolBar项目封装,踩坑过河
  8. Android(安卓)DataBinding 快速入门
  9. 【Android(安卓)开发教程】AbsoluteLayout绝对布局

随机推荐

  1. 向数据库添加1的PHP Onclick事件(SQL)
  2. 在4个表上使用JOIN和GROUP BY进行复杂的S
  3. 再放100分,问:你是如何备份大于5M的mysql
  4. Visual C ++ 2010连接到MySQL
  5. MySQL -如何在最小/最大日期差异超过3年
  6. Yahoo,Msn,Skype,QQ,阿里旺旺在线聊天链
  7. 如果条件按顺序,Mysql不能使用mysql
  8. 利用TPC-H为MYSQL生成数据
  9. 如何最好地处理重复日历事件的异常
  10. mysql中逗号分隔字段的更好替代方案