summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/values/dimens.xml3
-rw-r--r--src/com/android/launcher3/DeviceProfile.java30
-rw-r--r--src/com/android/launcher3/Launcher.java36
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;
}