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

    android 下拉状态栏(SystemUI)常见修改记录_第1张图片

    2.滑动亮度条后过渡到桌面的亮度条

    android 下拉状态栏(SystemUI)常见修改记录_第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图标块点击后信号强度

    android 下拉状态栏(SystemUI)常见修改记录_第3张图片 

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

    android 下拉状态栏(SystemUI)常见修改记录_第4张图片 

    修改两个位置:

    位置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);

    修改后效果:

    android 下拉状态栏(SystemUI)常见修改记录_第5张图片 

    9.多条通知栏的背景修改

    android 下拉状态栏(SystemUI)常见修改记录_第6张图片 

    frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView

    默认背景就是当前界面截图加了个黑色透明度。

    这个要谨改,因为会影响到按下power键唤醒屏幕时候的锁屏。如果把背景设成黑色,可能power键唤醒屏幕后,多条通知栏的背景是黑的。

    10.删除修改显示布局边界,GPU呈现模式分析,Nearby

    android 下拉状态栏(SystemUI)常见修改记录_第7张图片 

    GPU呈现模式分析,显示布局边界都是packages/apps/Settings中的

    在AndroidManifest.xml中可以找到

    	 
                 
                     
                 
             
             
                 
                     
                 
            

    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>, 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下拉状态栏新增自动调节亮度开关

    android 下拉状态栏(SystemUI)常见修改记录_第8张图片 

    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)常见修改记录)