1.下拉開關的創建(哪些顯示哪些不顯示):
在vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/qs/tileimpl/QSFactoryImpl.java中進行開關的創建;不顯示直接屏蔽就好
public QSTile createTile(String tileSpec) { /// M: Add extra tiles in quicksetting @{ Context context = mHost.getContext(); IQuickSettingsPlugin quickSettingsPlugin = OpSystemUICustomizationFactoryBase .getOpFactory(context).makeQuickSettings(context); /// @} if (tileSpec.equals("wifi")) return new WifiTile(mHost); //wifi else if (tileSpec.equals("bt")) return new BluetoothTile(mHost);//藍牙 else if (tileSpec.equals("cell")) return new CellularTile(mHost);//移動數據 /** * 屏蔽狀態欄功能 wanchengguo 20190527 begin * */ // else if (tileSpec.equals("dnd")) return new DndTile(mHost); // else if (tileSpec.equals("inversion")) return new ColorInversionTile(mHost); //else if (tileSpec.equals("airplane")) return new AirplaneModeTile(mHost);//飛行模式 //else if (tileSpec.equals("work")) return new WorkModeTile(mHost); else if (tileSpec.equals("rotation")) return new RotationLockTile(mHost);//屏幕旋轉 else if (tileSpec.equals("flashlight")) return new FlashlightTile(mHost);//手電筒 else if (tileSpec.equals("location")) return new LocationTile(mHost);//位置信息 //else if (tileSpec.equals("cast")) return new CastTile(mHost); // else if (tileSpec.equals("hotspot")) return new HotspotTile(mHost); //else if (tileSpec.equals("user")) return new UserTile(mHost); //else if (tileSpec.equals("battery")) return new BatterySaverTile(mHost);//省電模式 // else if (tileSpec.equals("saver")) return new DataSaverTile(mHost); // else if (tileSpec.equals("night")) return new NightDisplayTile(mHost); // else if (tileSpec.equals("nfc")) return new NfcTile(mHost); /// M: Customize the quick settings tiles for operator. @{ /*else if (tileSpec.equals("dataconnection") && !SIMHelper.isWifiOnlyDevice()) return new MobileDataTile(mHost); else if (tileSpec.equals("simdataconnection") && !SIMHelper.isWifiOnlyDevice() && quickSettingsPlugin.customizeAddQSTile(new SimDataConnectionTile(mHost)) != null) { return (SimDataConnectionTile) quickSettingsPlugin.customizeAddQSTile( new SimDataConnectionTile(mHost)); } else if (tileSpec.equals("dulsimsettings") && !SIMHelper.isWifiOnlyDevice() && quickSettingsPlugin.customizeAddQSTile(new DualSimSettingsTile(mHost)) != null) { return (DualSimSettingsTile) quickSettingsPlugin.customizeAddQSTile( new DualSimSettingsTile(mHost)); } */else if (tileSpec.equals("apnsettings") && !SIMHelper.isWifiOnlyDevice() && quickSettingsPlugin.customizeAddQSTile(new ApnSettingsTile(mHost)) != null) {//設置 return (ApnSettingsTile) quickSettingsPlugin.customizeAddQSTile( new ApnSettingsTile(mHost)); } //*/ freeme.gouzhouping, 20180120. FreemeAppTheme, add extra tiles. /*else if (tileSpec.equals("supershot")) {//超級截屏 return new com.freeme.systemui.qs.tiles.FreemeSuperShot(mHost); }*/ /** * 屏蔽狀態欄功能 wanchengguo 20190527 end * */ else if (tileSpec.equals("audioprofile")) {//聲音 return new com.freeme.systemui.qs.tiles.FreemeAudioProfile(mHost); } //*/ /// @} // Intent tiles. else if (tileSpec.startsWith(IntentTile.PREFIX)) return IntentTile.create(mHost, tileSpec); else if (tileSpec.startsWith(CustomTile.PREFIX)) return CustomTile.create(mHost, tileSpec); else { Log.w(TAG, "Bad tile spec: " + tileSpec); return null; } }
2.顯示兩行三列還是兩行四列:
由SystemUI\src\com\android\systemui\qs\PagedTileLayout.java中決定:詳見如下:
public static class TilePage extends TileLayout {
private int mMaxRows = 3;//定義下拉欄行數的地方 wanchengguo 20190618
public TilePage(Context context, AttributeSet attrs) {
super(context, attrs);
updateResources();
}@Override
public boolean updateResources() {
final int rows = getRows();
boolean changed = rows != mMaxRows;
if (changed) {
mMaxRows = rows;
requestLayout();
}
return super.updateResources() || changed;
}private int getRows() {
final Resources res = getContext().getResources();
if (res.getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
return res.getInteger(R.integer.quick_settings_num_rows_portrait);
}
return Math.max(1, res.getInteger(R.integer.quick_settings_num_rows));
}public void setMaxRows(int maxRows) {
mMaxRows = maxRows;
}public boolean isFull() {
return mRecords.size() >= mColumns * mMaxRows;//mColumns決定列數,這個是在哪個地方來的
}
}根據代碼可知mColumns是在TileLayout.java裏定義的;具體方法如下:
public boolean updateResources() { final Resources res = mContext.getResources(); final int columns = Math.max(1, res.getInteger(R.integer.quick_settings_num_columns)); mCellHeight = mContext.getResources().getDimensionPixelSize(R.dimen.qs_tile_height); mCellMargin = res.getDimensionPixelSize(R.dimen.qs_tile_margin); mCellMarginTop = res.getDimensionPixelSize(R.dimen.qs_tile_margin_top); if (mColumns != columns) { mColumns = columns; requestLayout(); return true; } return false; }所以列數只需要修改quick_settings_num_columns 即可
3.將亮度調節放在Viewpage的下面
修改SystemUI\src\com\android\systemui\qs\QSPanel.java
public QSPanel(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = context;setOrientation(VERTICAL);
/**
* 將亮度調節放在最末尾 20190618 begin wanchengguo
*/
/* mBrightnessView = LayoutInflater.from(context).inflate(
R.layout.quick_settings_brightness_dialog, this, false);
addView(mBrightnessView);*/// M: @ {
mQuickSettingsExt = OpSystemUICustomizationFactoryBase
.getOpFactory(context).makeQuickSettings(context);
if (mQuickSettingsExt != null) {
mQuickSettingsExt.addOpViews(this);
}
// @ }setupTileLayout();
mPageIndicator = LayoutInflater.from(context).inflate(
R.layout.qs_page_indicator, this, false);
addView(mPageIndicator);
mBrightnessView = LayoutInflater.from(context).inflate(
R.layout.quick_settings_brightness_dialog, this, false);
addView(mBrightnessView);
/**
* 將亮度調節放在最末尾 20190618 end wanchengguo
*/
if (mTileLayout instanceof PagedTileLayout) {
((PagedTileLayout) mTileLayout).setPageIndicator((PageIndicator) mPageIndicator);
}addDivider();
mFooter = new QSSecurityFooter(this, context);
addView(mFooter.getView());updateResources();
mBrightnessController = new BrightnessController(getContext(),
findViewById(R.id.brightness_icon),
findViewById(R.id.brightness_slider));
}