From bcbeab8fc7b8e62a68658f05cc7ce310c64feded Mon Sep 17 00:00:00 2001 From: Joe Onorato Date: Thu, 1 Oct 2009 21:45:43 -0700 Subject: [PATCH] Put the home button back in. --- res/drawable-hdpi/all_apps_button_pow2.png | Bin 8709 -> 0 bytes res/drawable-hdpi/home_button.png | Bin 6214 -> 3414 bytes res/raw/rollo.c | 23 ++- src/com/android/launcher2/AllAppsView.java | 187 ++++++++++++--------- 4 files changed, 133 insertions(+), 77 deletions(-) delete mode 100644 res/drawable-hdpi/all_apps_button_pow2.png diff --git a/res/drawable-hdpi/all_apps_button_pow2.png b/res/drawable-hdpi/all_apps_button_pow2.png deleted file mode 100644 index ab93e949525e96c8f78310c57257bf7c33ba416f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8709 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 HxfA~jSrkJ1 literal 6214 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 diff --git a/res/raw/rollo.c b/res/raw/rollo.c index eb019eec88..01781e2b48 100644 --- a/res/raw/rollo.c +++ b/res/raw/rollo.c @@ -275,6 +275,23 @@ draw_page(int icon, int lastIcon, float centerAngle, float scale) } } +void +draw_home_button() +{ + color(1.0f, 1.0f, 1.0f, 1.0f); + bindTexture(NAMED_PFTexLinear, 0, params->homeButtonId); + + float scale = 2.0f / SCREEN_WIDTH_PX; + + float x = 0.0f; + + float y = -(SCREEN_HEIGHT_PX / (float)SCREEN_WIDTH_PX); + y += g_Zoom * (scale * params->homeButtonTextureHeight / 2); + + float z = 0.0f; + drawSprite(x, y, z, params->homeButtonTextureWidth, params->homeButtonTextureHeight); +} + int main(int launchID) { @@ -312,7 +329,7 @@ main(int launchID) } else if (g_Zoom < 0.85f) { pfClearColor(0.0f, 0.0f, 0.0f, g_Zoom); } else { - pfClearColor(0.0f, 0.0f, 0.0f, 0.85f); + pfClearColor(0.0f, 0.0f, 0.0f, g_Zoom); } // icons & labels @@ -362,7 +379,9 @@ main(int launchID) } */ - // Draw the scroll handle ======================================== + // Draw the home button ======================================== + draw_home_button(); + /* bindTexture(NAMED_PFOrtho, 0, loadI32(ALLOC_PARAMS, PARAM_SCROLL_HANDLE_ID)); float handleLeft = 40 + (320 * (scrollXPx/(float)(maxScrollXPx))); diff --git a/src/com/android/launcher2/AllAppsView.java b/src/com/android/launcher2/AllAppsView.java index 3f64bd03d9..613cd97337 100644 --- a/src/com/android/launcher2/AllAppsView.java +++ b/src/com/android/launcher2/AllAppsView.java @@ -67,6 +67,9 @@ public class AllAppsView extends RSSurfaceView /** Bit for mLocks for when there are icons being loaded. */ private static final int LOCK_ICONS_PENDING = 1; + private static final int TRACKING_FLING = 0; + private static final int TRACKING_HOME = 1; + private Launcher mLauncher; private DragController mDragController; @@ -77,6 +80,7 @@ public class AllAppsView extends RSSurfaceView private int mSlopX; private int mMaxFlingVelocity; + private Defines mDefines = new Defines(); private RenderScript mRS; private RolloRS mRollo; private ArrayList mAllAppsList; @@ -84,18 +88,15 @@ public class AllAppsView extends RSSurfaceView private int mPageCount; private boolean mStartedScrolling; private VelocityTracker mVelocity; + private int mTouchTracking; private int mLastMotionX; private int mMotionDownRawX; private int mMotionDownRawY; - private int mScrollHandleTop; + private int mHomeButtonTop; private long mTouchTime; private boolean mZoomSwipeInProgress; static class Defines { - private static float farSize(float sizeAt0) { - return sizeAt0 * (Defines.RADIUS - Defines.CAMERA_Z) / -Defines.CAMERA_Z; - } - public static final int ALLOC_PARAMS = 0; public static final int ALLOC_STATE = 1; public static final int ALLOC_READBACK = 2; @@ -109,9 +110,6 @@ public class AllAppsView extends RSSurfaceView public static final float RADIUS = 4.0f; - public static final int SCREEN_WIDTH_PX = 480; - public static final int SCREEN_HEIGHT_PX = 854; - public static final int ICON_WIDTH_PX = 64; public static final int ICON_TEXTURE_WIDTH_PX = 128; @@ -120,8 +118,21 @@ public class AllAppsView extends RSSurfaceView public static final float ICON_TOP_OFFSET = 0.2f; public static final float CAMERA_Z = -2; - public static final float FAR_ICON_SIZE - = farSize(2 * ICON_WIDTH_PX / (float)SCREEN_WIDTH_PX); + + public int SCREEN_WIDTH_PX; + public int SCREEN_HEIGHT_PX; + + public float FAR_ICON_SIZE; + + public void recompute(int w, int h) { + SCREEN_WIDTH_PX = 480; + SCREEN_HEIGHT_PX = 800; + FAR_ICON_SIZE = farSize(2 * ICON_WIDTH_PX / (float)w); + } + + private static float farSize(float sizeAt0) { + return sizeAt0 * (Defines.RADIUS - Defines.CAMERA_Z) / -Defines.CAMERA_Z; + } } public AllAppsView(Context context, AttributeSet attrs) { @@ -171,7 +182,7 @@ public class AllAppsView extends RSSurfaceView Resources res = getContext().getResources(); int barHeight = (int)res.getDimension(R.dimen.button_bar_height); - mScrollHandleTop = h - barHeight; + mHomeButtonTop = h - barHeight; long endTime = SystemClock.uptimeMillis(); Log.d(TAG, "surfaceChanged took " + (endTime-startTime) + "ms"); @@ -198,67 +209,89 @@ public class AllAppsView extends RSSurfaceView super.onTouchEvent(ev); int x = (int)ev.getX(); + int y = (int)ev.getY(); + int deltaX; - switch (ev.getAction()) { + int action = ev.getAction(); + switch (action) { case MotionEvent.ACTION_DOWN: - mMotionDownRawX = (int)ev.getRawX(); - mMotionDownRawY = (int)ev.getRawY(); - mLastMotionX = x; - mRollo.mReadback.read(); - - mRollo.mState.newPositionX = ev.getRawX() / Defines.SCREEN_WIDTH_PX; - mRollo.mState.newTouchDown = 1; - - if (!mRollo.checkClickOK()) { - mRollo.clearSelectedIcon(); + if (y > mRollo.mTouchYBorders[mRollo.mTouchYBorders.length-1]) { + mTouchTracking = TRACKING_HOME; } else { - mRollo.selectIcon(x, (int)ev.getY(), mRollo.mReadback.posX); + mTouchTracking = TRACKING_FLING; + + mMotionDownRawX = (int)ev.getRawX(); + mMotionDownRawY = (int)ev.getRawY(); + mLastMotionX = x; + mRollo.mReadback.read(); + + mRollo.mState.newPositionX = ev.getRawX() / mDefines.SCREEN_WIDTH_PX; + mRollo.mState.newTouchDown = 1; + + if (!mRollo.checkClickOK()) { + mRollo.clearSelectedIcon(); + } else { + mRollo.selectIcon(x, y, mRollo.mReadback.posX); + } + mRollo.mState.save(); + mRollo.mInvokeMove.execute(); + mVelocity = VelocityTracker.obtain(); + mVelocity.addMovement(ev); + mStartedScrolling = false; } - mRollo.mState.save(); - mRollo.mInvokeMove.execute(); - mVelocity = VelocityTracker.obtain(); - mVelocity.addMovement(ev); - mStartedScrolling = false; break; case MotionEvent.ACTION_MOVE: case MotionEvent.ACTION_OUTSIDE: - int slopX = Math.abs(x - mLastMotionX); - if (!mStartedScrolling && slopX < mSlopX) { - // don't update mLastMotionX so slopX is right and when we do start scrolling - // below, we get the right delta. + if (mTouchTracking == TRACKING_HOME) { + // TODO: highlight? } else { - mRollo.mState.newPositionX = ev.getRawX() / Defines.SCREEN_WIDTH_PX; - mRollo.mState.newTouchDown = 1; - mRollo.mInvokeMove.execute(); + int slopX = Math.abs(x - mLastMotionX); + if (!mStartedScrolling && slopX < mSlopX) { + // don't update mLastMotionX so slopX is right and when we do start scrolling + // below, we get the right delta. + } else { + mRollo.mState.newPositionX = ev.getRawX() / mDefines.SCREEN_WIDTH_PX; + mRollo.mState.newTouchDown = 1; + mRollo.mInvokeMove.execute(); - mStartedScrolling = true; - mRollo.clearSelectedIcon(); - deltaX = x - mLastMotionX; - mVelocity.addMovement(ev); - mRollo.mState.save(); - mLastMotionX = x; + mStartedScrolling = true; + mRollo.clearSelectedIcon(); + deltaX = x - mLastMotionX; + mVelocity.addMovement(ev); + mRollo.mState.save(); + mLastMotionX = x; + } } break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: - mRollo.mState.newTouchDown = 0; - mRollo.mState.newPositionX = ev.getRawX() / Defines.SCREEN_WIDTH_PX; - - if (!mZoomSwipeInProgress) { - mVelocity.computeCurrentVelocity(1000 /* px/sec */, mMaxFlingVelocity); - mRollo.mState.flingVelocityX = mVelocity.getXVelocity() / Defines.SCREEN_WIDTH_PX; - mRollo.clearSelectedIcon(); - mRollo.mState.save(); - mRollo.mInvokeFling.execute(); + if (mTouchTracking == TRACKING_HOME) { + if (action == MotionEvent.ACTION_UP) { + if (y > mRollo.mTouchYBorders[mRollo.mTouchYBorders.length-1]) { + mLauncher.closeAllApps(true); + } + } } else { - mRollo.mState.save(); - mRollo.mInvokeMove.execute(); - } + mRollo.mState.newTouchDown = 0; + mRollo.mState.newPositionX = ev.getRawX() / mDefines.SCREEN_WIDTH_PX; - mLastMotionX = -10000; - mVelocity.recycle(); - mVelocity = null; - break; + if (!mZoomSwipeInProgress) { + mVelocity.computeCurrentVelocity(1000 /* px/sec */, mMaxFlingVelocity); + mRollo.mState.flingVelocityX + = mVelocity.getXVelocity() / mDefines.SCREEN_WIDTH_PX; + mRollo.clearSelectedIcon(); + mRollo.mState.save(); + mRollo.mInvokeFling.execute(); + } else { + mRollo.mState.save(); + mRollo.mInvokeMove.execute(); + } + + mLastMotionX = -10000; + mVelocity.recycle(); + mVelocity = null; + break; + } } return true; @@ -285,13 +318,13 @@ public class AllAppsView extends RSSurfaceView ApplicationInfo app = mAllAppsList.get(index); // We don't really have an accurate location to use. This will do. - int screenX = mMotionDownRawX - (Defines.ICON_WIDTH_PX / 2); - int screenY = mMotionDownRawY - Defines.ICON_HEIGHT_PX; + int screenX = mMotionDownRawX - (mDefines.ICON_WIDTH_PX / 2); + int screenY = mMotionDownRawY - mDefines.ICON_HEIGHT_PX; - int left = (Defines.ICON_TEXTURE_WIDTH_PX - Defines.ICON_WIDTH_PX) / 2; - int top = (Defines.ICON_TEXTURE_HEIGHT_PX - Defines.ICON_HEIGHT_PX) / 2; + int left = (mDefines.ICON_TEXTURE_WIDTH_PX - mDefines.ICON_WIDTH_PX) / 2; + int top = (mDefines.ICON_TEXTURE_HEIGHT_PX - mDefines.ICON_HEIGHT_PX) / 2; mDragController.startDrag(app.iconBitmap, screenX, screenY, - left, top, Defines.ICON_WIDTH_PX, Defines.ICON_HEIGHT_PX, + left, top, mDefines.ICON_WIDTH_PX, mDefines.ICON_HEIGHT_PX, this, app, DragController.DRAG_ACTION_COPY); mLauncher.closeAllApps(true); @@ -431,7 +464,7 @@ public class AllAppsView extends RSSurfaceView private ProgramVertex mPV; private ProgramVertex mPVOrtho; - private Allocation mScrollHandle; + private Allocation mHomeButton; private Allocation[] mIcons; private int[] mIconIds; @@ -479,9 +512,12 @@ public class AllAppsView extends RSSurfaceView public int bubbleHeight; public int bubbleBitmapWidth; public int bubbleBitmapHeight; - public int scrollHandleId; - public int scrollHandleTextureWidth; - public int scrollHandleTextureHeight; + + public int homeButtonId; + public int homeButtonWidth; + public int homeButtonHeight; + public int homeButtonTextureWidth; + public int homeButtonTextureHeight; } class State extends BaseAlloc { @@ -526,6 +562,7 @@ public class AllAppsView extends RSSurfaceView mRes = res; mWidth = width; mHeight = height; + mDefines.recompute(width, height); initProgramVertex(); initProgramFragment(); initProgramStore(); @@ -619,14 +656,14 @@ public class AllAppsView extends RSSurfaceView mParams.bubbleBitmapWidth = bubble.getBitmapWidth(); mParams.bubbleBitmapHeight = bubble.getBitmapHeight(); - mScrollHandle = Allocation.createFromBitmapResource(mRS, mRes, - R.drawable.all_apps_button_pow2, Element.RGBA_8888(mRS), false); - mScrollHandle.uploadToTexture(0); - mParams.scrollHandleId = mScrollHandle.getID(); - Log.d(TAG, "mParams.scrollHandleId=" + mParams.scrollHandleId); - mParams.scrollHandleTextureWidth = 128; - mParams.scrollHandleTextureHeight = 128; - + mHomeButton = Allocation.createFromBitmapResource(mRS, mRes, + R.drawable.home_button, Element.RGBA_8888(mRS), false); + mHomeButton.uploadToTexture(0); + mParams.homeButtonId = mHomeButton.getID(); + mParams.homeButtonWidth = 76; + mParams.homeButtonHeight = 68; + mParams.homeButtonTextureWidth = 128; + mParams.homeButtonTextureHeight = 128; mParams.save(); mState.save(); @@ -644,7 +681,7 @@ public class AllAppsView extends RSSurfaceView ScriptC.Builder sb = new ScriptC.Builder(mRS); sb.setScript(mRes, R.raw.rollo); sb.setRoot(true); - sb.addDefines(Defines.class); + sb.addDefines(mDefines); sb.setType(mParams.mType, "params", Defines.ALLOC_PARAMS); sb.setType(mState.mType, "state", Defines.ALLOC_STATE); sb.setType(mReadback.mType, "readback", Defines.ALLOC_READBACK);