嵌入式系统移植 - SystemUI : QSPanel - 修改 QS Layout 布局

QSPanel - 修改 QS Layout 布局

说明

本文档提供三种布局的修改.

修改源码

  • 修改 BrightnessSeekbar 和 Tiles 的位置
    在这里插入图片描述
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
--- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
@@ -45,6 +45,8 @@ import com.android.systemui.statusbar.policy.BrightnessMirrorController;
 import java.util.ArrayList;
 import java.util.Collection;
 
+import com.android.systemui.utils.XMLUtils;
+
 /** View that represents the quick settings tile panel. **/
 public class QSPanel extends ViewGroup {
     private static final float TILE_ASPECT = 1.2f;
@@ -486,7 +488,9 @@ public class QSPanel extends ViewGroup {
             record.tileView.measure(exactly(cw), exactly(ch));
             previousView = record.tileView.updateAccessibilityOrder(previousView);
         }
-        int h = rows == 0 ? brightnessHeight : (getRowTop(rows) + mPanelPaddingBottom);
+        int h = rows == 0 ? brightnessHeight : (getRowTop(rows) + mPanelPaddingBottom +
+            (mSwapBrightnessLocation ? brightnessHeight : 0));
+		
         if (mFooter.hasFooter()) {
             h += mFooter.getView().getMeasuredHeight();
         }
@@ -501,13 +505,13 @@ public class QSPanel extends ViewGroup {
     private static int exactly(int size) {
         return MeasureSpec.makeMeasureSpec(size, MeasureSpec.EXACTLY);
     }
-
+	
     @Override
     protected void onLayout(boolean changed, int l, int t, int r, int b) {
         final int w = getWidth();
-        mBrightnessView.layout(0, mBrightnessPaddingTop,
-                mBrightnessView.getMeasuredWidth(),
-                mBrightnessPaddingTop + mBrightnessView.getMeasuredHeight());
+        //mBrightnessView.layout(0, mBrightnessPaddingTop,
+        //        mBrightnessView.getMeasuredWidth(),
+        //        mBrightnessPaddingTop + mBrightnessView.getMeasuredHeight());
         boolean isRtl = getLayoutDirection() == LAYOUT_DIRECTION_RTL;
         for (TileRecord record : mRecords) {
             if (record.tileView.getVisibility() == GONE) continue;
@@ -526,6 +530,20 @@ public class QSPanel extends ViewGroup {
             }
             record.tileView.layout(left, top, right, top + record.tileView.getMeasuredHeight());
         }
+
+		if (!mRecords.isEmpty() && mSwapBrightnessLocation) {
+		    TileRecord record = mRecords.get(mRecords.size() - 1);
+		    int brightnessTop = record.tileView.getMeasuredHeight() + mBrightnessPaddingTop;
+
+		    mBrightnessView.layout(0, brightnessTop,
+		        mBrightnessView.getMeasuredWidth(),
+		        brightnessTop + mBrightnessView.getMeasuredHeight());
+		} else {
+		    mBrightnessView.layout(0, mBrightnessPaddingTop,
+		        mBrightnessView.getMeasuredWidth(),
+		        mBrightnessPaddingTop + mBrightnessView.getMeasuredHeight());
+		}
+		
         final int dh = Math.max(mDetail.getMeasuredHeight(), getMeasuredHeight());
         mDetail.layout(0, 0, mDetail.getMeasuredWidth(), dh);
         if (mFooter.hasFooter()) {
@@ -535,12 +553,17 @@ public class QSPanel extends ViewGroup {
         }
     }
 
+	private static final boolean mSwapBrightnessLocation = XMLUtils.getInstance().checkMatch(
+	    XMLUtils.Group.GROUP_QSPANEL_SWITCH, XMLUtils.Attr.ATTR_ASSET_CHOOSE, XMLUtils.Policy.POLICY_SWAP_SEEKBAR_TILES);
+	    
     private int getRowTop(int row) {
-        if (row <= 0) return mBrightnessView.getMeasuredHeight() + mBrightnessPaddingTop;
-        return mBrightnessView.getMeasuredHeight() + mBrightnessPaddingTop
-                + mLargeCellHeight - mDualTileUnderlap + (row - 1) * mCellHeight;
+        final int brightnessHeight = mSwapBrightnessLocation ? 
+			 0 : (mBrightnessView.getMeasuredHeight() + mBrightnessPaddingTop);
+		
+		if (row <= 0) return brightnessHeight;
+		return brightnessHeight + mLargeCellHeight - mDualTileUnderlap + (row - 1) * mCellHeight;
     }
-
+	
     private int getColumnCount(int row) {
         int cols = 0;
         for (TileRecord record : mRecords) {

  • 修改 Tiles 的大小
    在这里插入图片描述
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index d4c5298..cdedd3f 100755
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -164,7 +164,7 @@
     <dimen name="pull_span_min">25dp</dimen>

     <dimen name="qs_tile_height">88dp</dimen>
-    <dimen name="qs_tile_icon_size">24dp</dimen>
+    <dimen name="qs_tile_icon_size">32dp</dimen>
     <dimen name="qs_tile_text_size">12sp</dimen>
     <dimen name="qs_tile_divider_height">1dp</dimen>
     <dimen name="qs_panel_padding">16dp</dimen>
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
index 79f3c0a..d051068 100755
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
@@ -55,7 +55,7 @@ public class BluetoothTile extends QSTile<QSTile.BooleanState>  {

     @Override
     public boolean supportsDualTargets() {
-        return true;
+        return false;
     }

     @Override
  • 修改 Tiles 一行的个数
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index 4e67655..9e57db6 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -106,7 +106,7 @@
     <integer name="config_recent_item_min_alpha">3</integer>

     <!-- The number of columns in the QuickSettings -->
-    <integer name="quick_settings_num_columns">3</integer>
+    <integer name="quick_settings_num_columns">4</integer>

     <!-- The maximum number of rows in the QuickSettings -->
     <integer name="quick_settings_max_rows">4</integer>

与之相关 - 修改实例

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值