Allow determining # of rows/columns for All Apps and Customize at run time
DO NOT MERGE Change-Id: I9ba0add8f2b2ffb324468768ad058c8426db6894
This commit is contained in:
@@ -65,6 +65,8 @@ public class AllAppsPagedView extends PagedViewWithDraggableItems implements All
|
|||||||
private final LayoutInflater mInflater;
|
private final LayoutInflater mInflater;
|
||||||
private boolean mAllowHardwareLayerCreation;
|
private boolean mAllowHardwareLayerCreation;
|
||||||
|
|
||||||
|
private boolean mFirstMeasure = true;
|
||||||
|
|
||||||
private int mPageContentWidth;
|
private int mPageContentWidth;
|
||||||
|
|
||||||
public AllAppsPagedView(Context context) {
|
public AllAppsPagedView(Context context) {
|
||||||
@@ -102,6 +104,31 @@ public class AllAppsPagedView extends PagedViewWithDraggableItems implements All
|
|||||||
mCenterPagesVertically = false;
|
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() {
|
void allowHardwareLayerCreation() {
|
||||||
// This is called after the first time we launch into All Apps. Before that point,
|
// 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
|
// 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
|
@Override
|
||||||
public void syncPages() {
|
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)
|
// ensure that we have the right number of pages (min of 1, since we have placeholders)
|
||||||
int numPages = Math.max(1,
|
int numPages = Math.max(1,
|
||||||
(int) Math.ceil((float) mFilteredApps.size() / (mCellCountX * mCellCountY)));
|
(int) Math.ceil((float) mFilteredApps.size() / (mCellCountX * mCellCountY)));
|
||||||
|
|||||||
@@ -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.
|
// 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.
|
// 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
|
@Override
|
||||||
protected void onLayout(boolean changed, int l, int t, int r, int b) {
|
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);
|
super.onLayout(changed, l, t, r, b);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ import android.view.LayoutInflater;
|
|||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.View.MeasureSpec;
|
||||||
import android.view.animation.DecelerateInterpolator;
|
import android.view.animation.DecelerateInterpolator;
|
||||||
import android.view.animation.LinearInterpolator;
|
import android.view.animation.LinearInterpolator;
|
||||||
import android.widget.Checkable;
|
import android.widget.Checkable;
|
||||||
@@ -124,6 +125,8 @@ public class CustomizePagedView extends PagedViewWithDraggableItems
|
|||||||
private final Canvas mCanvas = new Canvas();
|
private final Canvas mCanvas = new Canvas();
|
||||||
private final LayoutInflater mInflater;
|
private final LayoutInflater mInflater;
|
||||||
|
|
||||||
|
private boolean mFirstMeasure = true;
|
||||||
|
|
||||||
private final float mTmpFloatPos[] = new float[2];
|
private final float mTmpFloatPos[] = new float[2];
|
||||||
private final float ANIMATION_SCALE = 0.5f;
|
private final float ANIMATION_SCALE = 0.5f;
|
||||||
|
|
||||||
@@ -190,6 +193,31 @@ public class CustomizePagedView extends PagedViewWithDraggableItems
|
|||||||
mCenterPagesVertically = false;
|
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) {
|
public void setLauncher(Launcher launcher) {
|
||||||
Context context = getContext();
|
Context context = getContext();
|
||||||
mLauncher = launcher;
|
mLauncher = launcher;
|
||||||
@@ -1095,6 +1123,11 @@ public class CustomizePagedView extends PagedViewWithDraggableItems
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void syncPages() {
|
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 enforceMinimumPagedWidths = false;
|
||||||
boolean centerPagedViewCellLayouts = false;
|
boolean centerPagedViewCellLayouts = false;
|
||||||
switch (mCustomizationType) {
|
switch (mCustomizationType) {
|
||||||
|
|||||||
@@ -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
|
@Override
|
||||||
@@ -145,7 +134,23 @@ public class CustomizeTrayTabHost extends TabHost implements LauncherTransitiona
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onLayout(boolean changed, int l, int t, int r, int b) {
|
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);
|
super.onLayout(changed, l, t, r, b);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user