Allow determining # of rows/columns for All Apps and Customize at run time

This commit is contained in:
Michael Jurka
2011-05-17 18:21:03 -07:00
parent d1d48a6840
commit 4c6016fab1
4 changed files with 96 additions and 29 deletions
@@ -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;
@@ -1093,6 +1121,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) {