diff options
-rw-r--r-- | res/values/dimens.xml | 3 | ||||
-rw-r--r-- | src/com/android/launcher3/DeviceProfile.java | 30 | ||||
-rw-r--r-- | src/com/android/launcher3/Launcher.java | 36 |
3 files changed, 51 insertions, 18 deletions
diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 28b6a5bcc..1eca5b382 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -25,7 +25,8 @@ <dimen name="dynamic_grid_workspace_page_spacing">8dp</dimen> <dimen name="dynamic_grid_overview_min_icon_zone_height">80dp</dimen> <dimen name="dynamic_grid_overview_max_icon_zone_height">120dp</dimen> - <dimen name="dynamic_grid_overview_bar_max_width">280dp</dimen> + <dimen name="dynamic_grid_overview_bar_item_width">48dp</dimen> + <dimen name="dynamic_grid_overview_bar_spacer_width">68dp</dimen> <!-- Cling --> <dimen name="clingPunchThroughGraphicCenterRadius">94dp</dimen> diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java index a64d5e403..fb946904b 100644 --- a/src/com/android/launcher3/DeviceProfile.java +++ b/src/com/android/launcher3/DeviceProfile.java @@ -31,6 +31,7 @@ import android.view.Display; import android.view.Gravity; import android.view.Surface; import android.view.View; +import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.view.WindowManager; import android.widget.FrameLayout; @@ -88,7 +89,8 @@ public class DeviceProfile { int overviewModeMinIconZoneHeightPx; int overviewModeMaxIconZoneHeightPx; - int overviewModeMaxBarWidthPx; + int overviewModeBarItemWidthPx; + int overviewModeBarSpacerWidthPx; float overviewModeIconZoneRatio; float overviewModeScaleFactor; @@ -170,8 +172,10 @@ public class DeviceProfile { res.getDimensionPixelSize(R.dimen.dynamic_grid_overview_min_icon_zone_height); overviewModeMaxIconZoneHeightPx = res.getDimensionPixelSize(R.dimen.dynamic_grid_overview_max_icon_zone_height); - overviewModeMaxBarWidthPx = - res.getDimensionPixelSize(R.dimen.dynamic_grid_overview_bar_max_width); + overviewModeBarItemWidthPx = + res.getDimensionPixelSize(R.dimen.dynamic_grid_overview_bar_item_width); + overviewModeBarSpacerWidthPx = + res.getDimensionPixelSize(R.dimen.dynamic_grid_overview_bar_spacer_width); overviewModeIconZoneRatio = res.getInteger(R.integer.config_dynamic_grid_overview_icon_zone_percentage) / 100f; overviewModeScaleFactor = @@ -593,6 +597,21 @@ public class DeviceProfile { return isVerticalBarLayout() || isLargeTablet(); } + int getVisibleChildCount(ViewGroup parent) { + int visibleChildren = 0; + for (int i = 0; i < parent.getChildCount(); i++) { + if (parent.getChildAt(i).getVisibility() != View.GONE) { + visibleChildren++; + } + } + return visibleChildren; + } + + int calculateOverviewModeWidth(int visibleChildCount) { + return visibleChildCount * overviewModeBarItemWidthPx + + (visibleChildCount-1) * overviewModeBarSpacerWidthPx; + } + public void layout(Launcher launcher) { FrameLayout.LayoutParams lp; Resources res = launcher.getResources(); @@ -739,12 +758,13 @@ public class DeviceProfile { } // Layout the Overview Mode - View overviewMode = launcher.getOverviewPanel(); + ViewGroup overviewMode = launcher.getOverviewPanel(); if (overviewMode != null) { Rect r = getOverviewModeButtonBarRect(); lp = (FrameLayout.LayoutParams) overviewMode.getLayoutParams(); lp.gravity = Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM; - lp.width = Math.min(availableWidthPx, overviewModeMaxBarWidthPx); + lp.width = Math.min(availableWidthPx, + calculateOverviewModeWidth(getVisibleChildCount(overviewMode))); lp.height = r.height(); overviewMode.setLayoutParams(lp); } diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index aadcd8799..d70967d37 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -248,7 +248,7 @@ public class Launcher extends Activity private FolderInfo mFolderInfo; private Hotseat mHotseat; - private View mOverviewPanel; + private ViewGroup mOverviewPanel; private View mAllAppsButton; @@ -1061,6 +1061,10 @@ public class Launcher extends Activity public void onScrollProgressChanged(float progress); } + protected boolean hasSettings() { + return false; + } + protected void startSettings() { } @@ -1242,7 +1246,7 @@ public class Launcher extends Activity mHotseat.setOnLongClickListener(this); } - mOverviewPanel = findViewById(R.id.overview_panel); + mOverviewPanel = (ViewGroup) findViewById(R.id.overview_panel); View widgetButton = findViewById(R.id.widget_button); widgetButton.setOnClickListener(new OnClickListener() { @Override @@ -1266,15 +1270,23 @@ public class Launcher extends Activity wallpaperButton.setOnTouchListener(getHapticFeedbackTouchListener()); View settingsButton = findViewById(R.id.settings_button); - settingsButton.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View arg0) { - if (!mWorkspace.isSwitchingState()) { - startSettings(); - } - } - }); - settingsButton.setOnTouchListener(getHapticFeedbackTouchListener()); + if (hasSettings()) { + settingsButton.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View arg0) { + if (!mWorkspace.isSwitchingState()) { + startSettings(); + } + } + }); + settingsButton.setOnTouchListener(getHapticFeedbackTouchListener()); + } else { + settingsButton.setVisibility(View.GONE); + FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) widgetButton.getLayoutParams(); + lp.gravity = Gravity.END | Gravity.TOP; + widgetButton.requestLayout(); + } + mOverviewPanel.setAlpha(0f); // Setup the workspace @@ -1746,7 +1758,7 @@ public class Launcher extends Activity return mHotseat; } - public View getOverviewPanel() { + public ViewGroup getOverviewPanel() { return mOverviewPanel; } |