diff options
author | Michael Jurka <mikejurka@google.com> | 2011-05-17 18:21:03 -0700 |
---|---|---|
committer | Michael Jurka <mikejurka@google.com> | 2011-05-20 15:10:10 -0700 |
commit | ea2daffe8f950f2166f0a07d498e84e33a964252 (patch) | |
tree | 485feb761662a927dcf2670f1c3554e19ad63b12 /src | |
parent | 38d1b0b3520243505a4a1469b5730e0b9c7e24ce (diff) | |
download | android_packages_apps_Trebuchet-ea2daffe8f950f2166f0a07d498e84e33a964252.tar.gz android_packages_apps_Trebuchet-ea2daffe8f950f2166f0a07d498e84e33a964252.tar.bz2 android_packages_apps_Trebuchet-ea2daffe8f950f2166f0a07d498e84e33a964252.zip |
Allow determining # of rows/columns for All Apps and Customize at run time
DO NOT MERGE
Change-Id: I9ba0add8f2b2ffb324468768ad058c8426db6894
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/launcher2/AllAppsPagedView.java | 32 | ||||
-rw-r--r-- | src/com/android/launcher2/AllAppsTabbed.java | 25 | ||||
-rw-r--r-- | src/com/android/launcher2/CustomizePagedView.java | 33 | ||||
-rw-r--r-- | src/com/android/launcher2/CustomizeTrayTabHost.java | 29 |
4 files changed, 96 insertions, 23 deletions
diff --git a/src/com/android/launcher2/AllAppsPagedView.java b/src/com/android/launcher2/AllAppsPagedView.java index 87d255e60..522f7d7ac 100644 --- a/src/com/android/launcher2/AllAppsPagedView.java +++ b/src/com/android/launcher2/AllAppsPagedView.java @@ -65,6 +65,8 @@ public class AllAppsPagedView extends PagedViewWithDraggableItems implements All private final LayoutInflater mInflater; private boolean mAllowHardwareLayerCreation; + private boolean mFirstMeasure = true; + private int mPageContentWidth; public AllAppsPagedView(Context context) { @@ -102,6 +104,31 @@ public class AllAppsPagedView extends PagedViewWithDraggableItems implements All mCenterPagesVertically = false; } + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + + final int widthSize = MeasureSpec.getSize(widthMeasureSpec); + final int heightSize = MeasureSpec.getSize(heightMeasureSpec); + + if (mFirstMeasure) { + mFirstMeasure = false; + + // TODO: actually calculate mCellCountX/mCellCountY as some function of + // widthSize and heightSize + //mCellCountX = ?; + //mCellCountY = ?; + + // Since mCellCountX/mCellCountY changed, we need to update the pages + invalidatePageData(); + + // Create a dummy page and set it up to find out the content width (used by our parent) + PagedViewCellLayout layout = new PagedViewCellLayout(getContext()); + setupPage(layout); + mPageContentWidth = layout.getContentWidth(); + } + } + void allowHardwareLayerCreation() { // This is called after the first time we launch into All Apps. Before that point, // there's no need for hardware layers here since there's a hardware layer set on the @@ -459,6 +486,11 @@ public class AllAppsPagedView extends PagedViewWithDraggableItems implements All @Override public void syncPages() { + if (mFirstMeasure) { + // We don't know our size yet, which means we haven't calculated cell count x/y; + // onMeasure will call us once we figure out our size + return; + } // ensure that we have the right number of pages (min of 1, since we have placeholders) int numPages = Math.max(1, (int) Math.ceil((float) mFilteredApps.size() / (mCellCountX * mCellCountY))); diff --git a/src/com/android/launcher2/AllAppsTabbed.java b/src/com/android/launcher2/AllAppsTabbed.java index ee7bfc056..e11113f45 100644 --- a/src/com/android/launcher2/AllAppsTabbed.java +++ b/src/com/android/launcher2/AllAppsTabbed.java @@ -117,16 +117,6 @@ public class AllAppsTabbed extends TabHost implements AllAppsView, LauncherTrans } }); - // Set the width of the tab bar properly - int pageWidth = mAllApps.getPageContentWidth(); - View allAppsTabBar = (View) findViewById(R.id.all_apps_tab_bar); - if (allAppsTabBar == null) throw new Resources.NotFoundException(); - int tabWidgetPadding = 0; - final int childCount = tabWidget.getChildCount(); - if (childCount > 0) { - tabWidgetPadding += tabWidget.getChildAt(0).getPaddingLeft() * 2; - } - allAppsTabBar.getLayoutParams().width = pageWidth + tabWidgetPadding; // It needs to be INVISIBLE so that it will be measured in the layout. // Otherwise the animations is messed up when we show it for the first time. @@ -171,7 +161,20 @@ public class AllAppsTabbed extends TabHost implements AllAppsView, LauncherTrans @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { - mFirstLayout = false; + if (mFirstLayout) { + mFirstLayout = false; + // Set the width of the tab bar properly + int pageWidth = mAllApps.getPageContentWidth(); + TabWidget tabWidget = (TabWidget) findViewById(com.android.internal.R.id.tabs); + View allAppsTabBar = (View) findViewById(R.id.all_apps_tab_bar); + if (allAppsTabBar == null) throw new Resources.NotFoundException(); + int tabWidgetPadding = 0; + final int childCount = tabWidget.getChildCount(); + if (childCount > 0) { + tabWidgetPadding += tabWidget.getChildAt(0).getPaddingLeft() * 2; + } + allAppsTabBar.getLayoutParams().width = pageWidth + tabWidgetPadding; + } super.onLayout(changed, l, t, r, b); } diff --git a/src/com/android/launcher2/CustomizePagedView.java b/src/com/android/launcher2/CustomizePagedView.java index 92b73a0f7..cf1aa6b12 100644 --- a/src/com/android/launcher2/CustomizePagedView.java +++ b/src/com/android/launcher2/CustomizePagedView.java @@ -54,6 +54,7 @@ import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; +import android.view.View.MeasureSpec; import android.view.animation.DecelerateInterpolator; import android.view.animation.LinearInterpolator; import android.widget.Checkable; @@ -124,6 +125,8 @@ public class CustomizePagedView extends PagedViewWithDraggableItems private final Canvas mCanvas = new Canvas(); private final LayoutInflater mInflater; + private boolean mFirstMeasure = true; + private final float mTmpFloatPos[] = new float[2]; private final float ANIMATION_SCALE = 0.5f; @@ -190,6 +193,31 @@ public class CustomizePagedView extends PagedViewWithDraggableItems mCenterPagesVertically = false; } + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + + final int widthSize = MeasureSpec.getSize(widthMeasureSpec); + final int heightSize = MeasureSpec.getSize(heightMeasureSpec); + + if (mFirstMeasure) { + mFirstMeasure = false; + + // TODO: actually calculate mCellCountX/mCellCountY as some function of + // widthSize and heightSize + //mCellCountX = ? + //mCellCountY = ? + + // Since mCellCountX/mCellCountY changed, we need to update the pages + invalidatePageData(); + + // Create a dummy page and set it up to find out the content width (used by our parent) + PagedViewCellLayout layout = new PagedViewCellLayout(getContext()); + setupPage(layout); + mPageContentWidth = layout.getContentWidth(); + } + } + public void setLauncher(Launcher launcher) { Context context = getContext(); mLauncher = launcher; @@ -1095,6 +1123,11 @@ public class CustomizePagedView extends PagedViewWithDraggableItems @Override public void syncPages() { + if (mFirstMeasure) { + // We don't know our size yet, which means we haven't calculated cell count x/y; + // onMeasure will call us once we figure out our size + return; + } boolean enforceMinimumPagedWidths = false; boolean centerPagedViewCellLayouts = false; switch (mCustomizationType) { diff --git a/src/com/android/launcher2/CustomizeTrayTabHost.java b/src/com/android/launcher2/CustomizeTrayTabHost.java index 3e0402509..765c41dd2 100644 --- a/src/com/android/launcher2/CustomizeTrayTabHost.java +++ b/src/com/android/launcher2/CustomizeTrayTabHost.java @@ -110,17 +110,6 @@ public class CustomizeTrayTabHost extends TabHost implements LauncherTransitiona } } }); - - // Set the width of the tab bar properly - int pageWidth = customizePagedView.getPageContentWidth(); - TabWidget customizeTabBar = (TabWidget) findViewById(com.android.internal.R.id.tabs); - if (customizeTabBar == null) throw new Resources.NotFoundException(); - int tabWidgetPadding = 0; - final int childCount = tabWidget.getChildCount(); - if (childCount > 0) { - tabWidgetPadding += tabWidget.getChildAt(0).getPaddingLeft() * 2; - } - customizeTabBar.getLayoutParams().width = pageWidth + tabWidgetPadding; } @Override @@ -145,7 +134,23 @@ public class CustomizeTrayTabHost extends TabHost implements LauncherTransitiona @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { - mFirstLayout = false; + if (mFirstLayout) { + mFirstLayout = false; + + final CustomizePagedView customizePagedView = + (CustomizePagedView) findViewById(R.id.customization_drawer_tab_contents); + TabWidget tabWidget = (TabWidget) findViewById(com.android.internal.R.id.tabs); + // Set the width of the tab bar properly + int pageWidth = customizePagedView.getPageContentWidth(); + TabWidget customizeTabBar = (TabWidget) findViewById(com.android.internal.R.id.tabs); + if (customizeTabBar == null) throw new Resources.NotFoundException(); + int tabWidgetPadding = 0; + final int childCount = tabWidget.getChildCount(); + if (childCount > 0) { + tabWidgetPadding += tabWidget.getChildAt(0).getPaddingLeft() * 2; + } + customizeTabBar.getLayoutParams().width = pageWidth + tabWidgetPadding; + } super.onLayout(changed, l, t, r, b); } |