mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-19 18:58:19 +00:00
Let the user click the dots during a scroll on Home.
This allows faster scroll across Home. Also remove dead code.
This commit is contained in:
@@ -19,7 +19,6 @@ package com.android.launcher2;
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.Dialog;
|
||||
import android.app.ISearchManager;
|
||||
import android.app.SearchManager;
|
||||
import android.app.StatusBarManager;
|
||||
import android.app.WallpaperManager;
|
||||
@@ -46,8 +45,6 @@ import android.graphics.drawable.ColorDrawable;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Parcelable;
|
||||
import android.os.RemoteException;
|
||||
import android.os.ServiceManager;
|
||||
import android.os.SystemProperties;
|
||||
import android.provider.LiveFolders;
|
||||
import android.text.Selection;
|
||||
@@ -552,6 +549,7 @@ public final class Launcher extends Activity
|
||||
mHandleView = (HandleView) findViewById(R.id.all_apps_button);
|
||||
mHandleView.setLauncher(this);
|
||||
mHandleView.setOnClickListener(this);
|
||||
mHandleView.setOnLongClickListener(this);
|
||||
|
||||
mPreviousView = (ImageView) dragLayer.findViewById(R.id.previous_screen);
|
||||
mNextView = (ImageView) dragLayer.findViewById(R.id.next_screen);
|
||||
@@ -1482,14 +1480,21 @@ public final class Launcher extends Activity
|
||||
if (!isAllAppsVisible()) {
|
||||
mWorkspace.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS,
|
||||
HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING);
|
||||
showPreviousPreview(v);
|
||||
showPreviews(v);
|
||||
}
|
||||
return true;
|
||||
case R.id.next_screen:
|
||||
if (!isAllAppsVisible()) {
|
||||
mWorkspace.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS,
|
||||
HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING);
|
||||
showNextPreview(v);
|
||||
showPreviews(v);
|
||||
}
|
||||
return true;
|
||||
case R.id.all_apps_button:
|
||||
if (!isAllAppsVisible()) {
|
||||
mWorkspace.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS,
|
||||
HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING);
|
||||
showPreviews(v);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -1552,29 +1557,19 @@ public final class Launcher extends Activity
|
||||
v.setTag(null);
|
||||
}
|
||||
|
||||
private void showPreviousPreview(View anchor) {
|
||||
int current = mWorkspace.getCurrentScreen();
|
||||
if (current <= 0) return;
|
||||
|
||||
private void showPreviews(View anchor) {
|
||||
showPreviews(anchor, 0, mWorkspace.getChildCount());
|
||||
}
|
||||
|
||||
private void showNextPreview(View anchor) {
|
||||
int current = mWorkspace.getCurrentScreen();
|
||||
if (current >= mWorkspace.getChildCount() - 1) return;
|
||||
|
||||
showPreviews(anchor, 0, mWorkspace.getChildCount());
|
||||
}
|
||||
|
||||
private void showPreviews(final View anchor, int start, int end) {
|
||||
Resources resources = getResources();
|
||||
final Resources resources = getResources();
|
||||
final Workspace workspace = mWorkspace;
|
||||
|
||||
Workspace workspace = mWorkspace;
|
||||
CellLayout cell = ((CellLayout) workspace.getChildAt(start));
|
||||
|
||||
float max = workspace.getChildCount();
|
||||
|
||||
Rect r = new Rect();
|
||||
final Rect r = new Rect();
|
||||
resources.getDrawable(R.drawable.preview_background).getPadding(r);
|
||||
int extraW = (int) ((r.left + r.right) * max);
|
||||
int extraH = r.top + r.bottom;
|
||||
@@ -1605,10 +1600,10 @@ public final class Launcher extends Activity
|
||||
ImageView image = new ImageView(this);
|
||||
cell = (CellLayout) workspace.getChildAt(i);
|
||||
|
||||
Bitmap bitmap = Bitmap.createBitmap((int) sWidth, (int) sHeight,
|
||||
final Bitmap bitmap = Bitmap.createBitmap((int) sWidth, (int) sHeight,
|
||||
Bitmap.Config.ARGB_8888);
|
||||
|
||||
Canvas c = new Canvas(bitmap);
|
||||
|
||||
final Canvas c = new Canvas(bitmap);
|
||||
c.scale(scale, scale);
|
||||
c.translate(-cell.getLeftPadding(), -cell.getTopPadding());
|
||||
cell.dispatchDraw(c);
|
||||
@@ -1626,8 +1621,8 @@ public final class Launcher extends Activity
|
||||
|
||||
bitmaps.add(bitmap);
|
||||
}
|
||||
|
||||
PopupWindow p = new PopupWindow(this);
|
||||
|
||||
final PopupWindow p = new PopupWindow(this);
|
||||
p.setContentView(preview);
|
||||
p.setWidth((int) (sWidth * count + extraW));
|
||||
p.setHeight((int) (sHeight + extraH));
|
||||
@@ -1671,10 +1666,6 @@ public final class Launcher extends Activity
|
||||
}
|
||||
}
|
||||
|
||||
View getDrawerHandle() {
|
||||
return mHandleView;
|
||||
}
|
||||
|
||||
Workspace getWorkspace() {
|
||||
return mWorkspace;
|
||||
}
|
||||
@@ -1825,22 +1816,14 @@ public final class Launcher extends Activity
|
||||
return mAllAppsGrid.isVisible();
|
||||
}
|
||||
|
||||
boolean isAllAppsOpaque() {
|
||||
return mAllAppsGrid.isOpaque();
|
||||
}
|
||||
|
||||
void showAllApps(boolean animated) {
|
||||
mAllAppsGrid.zoom(1.0f, animated);
|
||||
//mWorkspace.hide();
|
||||
|
||||
mWorkspace.startFading(false);
|
||||
|
||||
mAllAppsGrid.setFocusable(true);
|
||||
mAllAppsGrid.requestFocus();
|
||||
|
||||
// TODO: fade these two too
|
||||
mDeleteZone.setVisibility(View.GONE);
|
||||
//mHandleView.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1879,13 +1862,6 @@ public final class Launcher extends Activity
|
||||
mAllAppsGrid.zoom(0.0f, animated);
|
||||
mAllAppsGrid.setFocusable(false);
|
||||
mWorkspace.getChildAt(mWorkspace.getCurrentScreen()).requestFocus();
|
||||
mWorkspace.startFading(true);
|
||||
|
||||
// TODO: fade these two too
|
||||
/*
|
||||
mDeleteZone.setVisibility(View.VISIBLE);
|
||||
mHandleView.setVisibility(View.VISIBLE);
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,6 @@ import android.content.ComponentName;
|
||||
import android.content.res.TypedArray;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.RectF;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Parcelable;
|
||||
@@ -103,16 +102,9 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag
|
||||
private int mTouchSlop;
|
||||
private int mMaximumVelocity;
|
||||
|
||||
final Rect mDrawerBounds = new Rect();
|
||||
final Rect mClipBounds = new Rect();
|
||||
int mDrawerContentHeight;
|
||||
int mDrawerContentWidth;
|
||||
|
||||
private Drawable mPreviousIndicator;
|
||||
private Drawable mNextIndicator;
|
||||
|
||||
private boolean mFading = true;
|
||||
|
||||
/**
|
||||
* Used to inflate the Workspace from XML.
|
||||
*
|
||||
@@ -245,27 +237,6 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag
|
||||
return mCurrentScreen;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns how many screens there are.
|
||||
*/
|
||||
int getScreenCount() {
|
||||
return getChildCount();
|
||||
}
|
||||
|
||||
/**
|
||||
* Computes a bounding rectangle for a range of cells
|
||||
*
|
||||
* @param cellX X coordinate of upper left corner expressed as a cell position
|
||||
* @param cellY Y coordinate of upper left corner expressed as a cell position
|
||||
* @param cellHSpan Width in cells
|
||||
* @param cellVSpan Height in cells
|
||||
* @param rect Rectnagle into which to put the results
|
||||
*/
|
||||
public void cellToRect(int cellX, int cellY, int cellHSpan, int cellVSpan, RectF rect) {
|
||||
((CellLayout)getChildAt(mCurrentScreen)).cellToRect(cellX, cellY,
|
||||
cellHSpan, cellVSpan, rect);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the current screen.
|
||||
*
|
||||
@@ -385,56 +356,6 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag
|
||||
mVacantCache = null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the coordinate of a vacant cell for the current screen.
|
||||
*/
|
||||
boolean getVacantCell(int[] vacant, int spanX, int spanY) {
|
||||
CellLayout group = (CellLayout) getChildAt(mCurrentScreen);
|
||||
if (group != null) {
|
||||
return group.getVacantCell(vacant, spanX, spanY);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the specified child in the current screen. The position and dimension of
|
||||
* the child are defined by x, y, spanX and spanY.
|
||||
*
|
||||
* @param child The child to add in one of the workspace's screens.
|
||||
* @param spanX The number of cells spanned horizontally by the child.
|
||||
* @param spanY The number of cells spanned vertically by the child.
|
||||
*/
|
||||
void fitInCurrentScreen(View child, int spanX, int spanY) {
|
||||
fitInScreen(child, mCurrentScreen, spanX, spanY);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the specified child in the specified screen. The position and dimension of
|
||||
* the child are defined by x, y, spanX and spanY.
|
||||
*
|
||||
* @param child The child to add in one of the workspace's screens.
|
||||
* @param screen The screen in which to add the child.
|
||||
* @param spanX The number of cells spanned horizontally by the child.
|
||||
* @param spanY The number of cells spanned vertically by the child.
|
||||
*/
|
||||
void fitInScreen(View child, int screen, int spanX, int spanY) {
|
||||
if (screen < 0 || screen >= getChildCount()) {
|
||||
throw new IllegalStateException("The screen must be >= 0 and < " + getChildCount());
|
||||
}
|
||||
|
||||
final CellLayout group = (CellLayout) getChildAt(screen);
|
||||
boolean vacant = group.getVacantCell(mTempCell, spanX, spanY);
|
||||
if (vacant) {
|
||||
group.addView(child,
|
||||
new CellLayout.LayoutParams(mTempCell[0], mTempCell[1], spanX, spanY));
|
||||
child.setHapticFeedbackEnabled(false);
|
||||
child.setOnLongClickListener(mLongClickListener);
|
||||
if (child instanceof DropTarget) {
|
||||
mDragController.addDropTarget((DropTarget)child);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the specified listener on each screen contained in this workspace.
|
||||
@@ -476,60 +397,17 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag
|
||||
}
|
||||
}
|
||||
|
||||
public void startFading(boolean dest) {
|
||||
mFading = dest;
|
||||
invalidate();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void dispatchDraw(Canvas canvas) {
|
||||
/*
|
||||
final boolean allAppsOpaque = mLauncher.isAllAppsOpaque();
|
||||
if (mFading == allAppsOpaque) {
|
||||
invalidate();
|
||||
} else {
|
||||
mFading = !allAppsOpaque;
|
||||
}
|
||||
if (allAppsOpaque) {
|
||||
// If the launcher is up, draw black.
|
||||
canvas.drawARGB(0xff, 0, 0, 0);
|
||||
return;
|
||||
}
|
||||
*/
|
||||
|
||||
boolean restore = false;
|
||||
int restoreCount = 0;
|
||||
|
||||
// For the fade. If view gets setAlpha(), use that instead.
|
||||
float scale = mScale;
|
||||
if (scale < 0.999f) {
|
||||
int sx = mScrollX;
|
||||
|
||||
int alpha = (scale < 0.5f) ? (int)(255 * 2 * scale) : 255;
|
||||
|
||||
restoreCount = canvas.saveLayerAlpha(sx, 0, sx+getWidth(), getHeight(), alpha,
|
||||
Canvas.HAS_ALPHA_LAYER_SAVE_FLAG | Canvas.CLIP_TO_LAYER_SAVE_FLAG);
|
||||
restore = true;
|
||||
|
||||
if (scale < 0.999f) {
|
||||
int w = getWidth();
|
||||
w += 2 * mCurrentScreen * w;
|
||||
int dx = w/2;
|
||||
int h = getHeight();
|
||||
int dy = (h/2) - (h/4);
|
||||
canvas.translate(dx, dy);
|
||||
canvas.scale(scale, scale);
|
||||
canvas.translate(-dx, -dy);
|
||||
}
|
||||
}
|
||||
|
||||
// ViewGroup.dispatchDraw() supports many features we don't need:
|
||||
// clip to padding, layout animation, animation listener, disappearing
|
||||
// children, etc. The following implementation attempts to fast-track
|
||||
// the drawing dispatch by drawing only what we know needs to be drawn.
|
||||
|
||||
boolean fastDraw = mTouchState != TOUCH_STATE_SCROLLING && mNextScreen == INVALID_SCREEN
|
||||
&& scale > 0.999f;
|
||||
boolean fastDraw = mTouchState != TOUCH_STATE_SCROLLING && mNextScreen == INVALID_SCREEN;
|
||||
// If we are not scrolling or flinging, draw only the current screen
|
||||
if (fastDraw) {
|
||||
drawChild(canvas, getChildAt(mCurrentScreen), getDrawingTime());
|
||||
@@ -554,12 +432,6 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag
|
||||
}
|
||||
}
|
||||
|
||||
private float mScale = 1.0f;
|
||||
public void setScale(float scale) {
|
||||
mScale = scale;
|
||||
invalidate();
|
||||
}
|
||||
|
||||
protected void onAttachedToWindow() {
|
||||
super.onAttachedToWindow();
|
||||
mDragController.setWindowToken(getWindowToken());
|
||||
@@ -974,7 +846,9 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag
|
||||
final int delta = newX - mScrollX;
|
||||
final int duration = screenDelta * 300;
|
||||
awakenScrollBars(duration);
|
||||
|
||||
// 1ms is close to don't animate
|
||||
if (!mScroller.isFinished()) mScroller.abortAnimation();
|
||||
mScroller.startScroll(mScrollX, 0, delta, 0, animate ? duration : 1);
|
||||
invalidate();
|
||||
}
|
||||
@@ -1220,16 +1094,19 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag
|
||||
|
||||
public void scrollLeft() {
|
||||
clearVacantCache();
|
||||
if (mNextScreen == INVALID_SCREEN && mCurrentScreen > 0 && mScroller.isFinished()) {
|
||||
snapToScreen(mCurrentScreen - 1);
|
||||
if (mScroller.isFinished()) {
|
||||
if (mCurrentScreen > 0) snapToScreen(mCurrentScreen - 1);
|
||||
} else {
|
||||
if (mNextScreen > 0) snapToScreen(mNextScreen - 1);
|
||||
}
|
||||
}
|
||||
|
||||
public void scrollRight() {
|
||||
clearVacantCache();
|
||||
if (mNextScreen == INVALID_SCREEN && mCurrentScreen < getChildCount() -1 &&
|
||||
mScroller.isFinished()) {
|
||||
snapToScreen(mCurrentScreen + 1);
|
||||
if (mScroller.isFinished()) {
|
||||
if (mCurrentScreen < getChildCount() -1) snapToScreen(mCurrentScreen + 1);
|
||||
} else {
|
||||
if (mNextScreen < getChildCount() -1) snapToScreen(mNextScreen + 1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1466,11 +1343,4 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
void show() {
|
||||
setVisibility(VISIBLE);
|
||||
}
|
||||
|
||||
void hide() {
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user