Make 2D All Apps work better in landscape and on hdpi.
* Correct the density (or, rather, remove the density) of
the icons in the cache to ensure they're drawn px-for-px.
* Create a new landscape layout for 2DAA that aligns things
properly (viz: Home icon at right, padding tuned, 6
columns).
* Performance improvement: Make the app grid, icons, and
home icon all opaque (by setting a black background) and
move the home icon so it doesn't overlap the grid.
Change-Id: I961323e9e39cb122cdc694853706e7fcdd10142f
diff --git a/res/layout/all_apps_2d.xml b/res/layout-land/all_apps_2d.xml
similarity index 73%
copy from res/layout/all_apps_2d.xml
copy to res/layout-land/all_apps_2d.xml
index 7bbfa91..a253b93 100644
--- a/res/layout/all_apps_2d.xml
+++ b/res/layout-land/all_apps_2d.xml
@@ -30,18 +30,17 @@
android:drawSelectorOnTop="false"
android:listSelector="@drawable/grid_selector"
android:verticalSpacing="10dip"
- android:numColumns="4"
+ android:numColumns="6"
android:fadingEdgeLength="48dip"
android:cacheColorHint="#FF000000"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:layout_alignParentBottom="true"
- android:layout_marginBottom="28dip"
- android:layout_marginTop="8dip"
- android:nextFocusDown="@+id/all_apps_2d_home"
+ android:layout_alignParentRight="true"
+ android:layout_marginRight="@dimen/button_bar_height_portrait"
+ android:nextFocusRight="@+id/all_apps_2d_home"
android:nextFocusUp="@null"
android:nextFocusLeft="@null"
- android:nextFocusRight="@null"
+ android:nextFocusDown="@null"
/>
<view
@@ -49,14 +48,15 @@
android:id="@+id/all_apps_2d_home"
android:tag="all_apps_2d_home"
android:src="@drawable/home_button"
- android:background="#00000000"
- android:layout_centerHorizontal="true"
- android:layout_alignParentBottom="true"
- android:layout_width="wrap_content"
- android:layout_height="@dimen/button_bar_height"
- android:nextFocusUp="@+id/all_apps_2d_grid"
+ android:background="#FF000000"
+ android:layout_alignParentRight="true"
+ android:layout_centerVertical="true"
+ android:layout_height="wrap_content"
+ android:layout_width="@dimen/button_bar_height_portrait"
+ android:paddingBottom="@dimen/status_bar_height"
+ android:nextFocusLeft="@+id/all_apps_2d_grid"
android:nextFocusDown="@null"
- android:nextFocusLeft="@null"
+ android:nextFocusUp="@null"
android:nextFocusRight="@null"
/>
diff --git a/res/layout/all_apps_2d.xml b/res/layout-port/all_apps_2d.xml
similarity index 95%
rename from res/layout/all_apps_2d.xml
rename to res/layout-port/all_apps_2d.xml
index 7bbfa91..0607d62 100644
--- a/res/layout/all_apps_2d.xml
+++ b/res/layout-port/all_apps_2d.xml
@@ -36,7 +36,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
- android:layout_marginBottom="28dip"
+ android:layout_marginBottom="@dimen/button_bar_height"
android:layout_marginTop="8dip"
android:nextFocusDown="@+id/all_apps_2d_home"
android:nextFocusUp="@null"
@@ -49,7 +49,7 @@
android:id="@+id/all_apps_2d_home"
android:tag="all_apps_2d_home"
android:src="@drawable/home_button"
- android:background="#00000000"
+ android:background="#FF000000"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
android:layout_width="wrap_content"
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 26cb7e6..790f835 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -24,6 +24,10 @@
button_bar_height changes -->
<dimen name="button_bar_height_portrait">56dip</dimen>
+ <!-- roughly a status bar (for vertically centering the all apps
+ home icon in landscape) -->
+ <dimen name="status_bar_height">25dip</dimen>
+
<!-- roughly half a status bar (for vertically centering the right-hand
button cluster in landscape) -->
<dimen name="half_status_bar_height">12dip</dimen>
diff --git a/src/com/android/launcher2/AllApps2D.java b/src/com/android/launcher2/AllApps2D.java
index 90c87fb..86571cf 100644
--- a/src/com/android/launcher2/AllApps2D.java
+++ b/src/com/android/launcher2/AllApps2D.java
@@ -20,6 +20,8 @@
import android.content.Context;
import android.content.res.Resources;
import android.graphics.drawable.BitmapDrawable;
+import android.graphics.Bitmap;
+import android.graphics.Color;
import android.util.AttributeSet;
import android.util.Log;
import android.view.KeyEvent;
@@ -49,6 +51,7 @@
DragSource {
private static final String TAG = "Launcher.AllApps2D";
+ private static final boolean DEBUG = false;
private Launcher mLauncher;
private DragController mDragController;
@@ -100,7 +103,13 @@
// }
final TextView textView = (TextView) convertView;
+ if (DEBUG) {
+ Log.d(TAG, "icon bitmap = " + info.iconBitmap
+ + " density = " + info.iconBitmap.getDensity());
+ }
+ info.iconBitmap.setDensity(Bitmap.DENSITY_NONE);
textView.setCompoundDrawablesWithIntrinsicBounds(null, new BitmapDrawable(info.iconBitmap), null, null);
+ textView.setBackgroundColor(Color.BLACK);
textView.setText(info.title);
return convertView;
@@ -118,13 +127,15 @@
@Override
protected void onFinishInflate() {
- setBackgroundColor(0xFF000000);
+ setBackgroundColor(Color.BLACK);
try {
mGrid = (GridView)findViewWithTag("all_apps_2d_grid");
if (mGrid == null) throw new Resources.NotFoundException();
mGrid.setOnItemClickListener(this);
mGrid.setOnItemLongClickListener(this);
+ mGrid.setBackgroundColor(Color.BLACK);
+ mGrid.setCacheColorHint(Color.BLACK);
ImageButton homeButton = (ImageButton) findViewWithTag("all_apps_2d_home");
if (homeButton == null) throw new Resources.NotFoundException();