diff options
| author | Michael Kolb <kolby@google.com> | 2011-02-25 09:45:06 -0800 |
|---|---|---|
| committer | Michael Kolb <kolby@google.com> | 2011-03-02 17:32:24 -0800 |
| commit | 2a56ecaf153d788a1acebc54b670347a1a58d693 (patch) | |
| tree | bcb217a561c8cd04db76be511e813fcb1b8cb1c6 /src | |
| parent | 0803e101ec185564b76874af0148e99de41ff9db (diff) | |
| download | packages_apps_Browser-2a56ecaf153d788a1acebc54b670347a1a58d693.tar.gz packages_apps_Browser-2a56ecaf153d788a1acebc54b670347a1a58d693.tar.bz2 packages_apps_Browser-2a56ecaf153d788a1acebc54b670347a1a58d693.zip | |
add haptic feedback, fix QC
reduced number of QC entries
fixed qc behavior with new titlebar
add haptic feedback to qc selection
change qc rendering from flat paint to bitmap shader
Change-Id: I4b89fea1aec7ce680147f663f2c22d0d369f4194
Diffstat (limited to 'src')
| -rw-r--r-- | src/com/android/browser/PieControl.java | 16 | ||||
| -rw-r--r-- | src/com/android/browser/TitleBarXLarge.java | 14 | ||||
| -rw-r--r-- | src/com/android/browser/UrlInputView.java | 6 | ||||
| -rw-r--r-- | src/com/android/browser/XLargeUi.java | 17 | ||||
| -rw-r--r-- | src/com/android/browser/view/PieMenu.java | 70 |
5 files changed, 93 insertions, 30 deletions
diff --git a/src/com/android/browser/PieControl.java b/src/com/android/browser/PieControl.java index 23dcced69..2e2eba433 100644 --- a/src/com/android/browser/PieControl.java +++ b/src/com/android/browser/PieControl.java @@ -64,22 +64,22 @@ public class PieControl implements OnClickListener, PieMenu.PieController { LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); mPie.setLayoutParams(lp); - mForward = makeMenuView(R.drawable.ic_pie_forward); - mPie.addItem(mForward); - mRefresh = makeMenuView(R.drawable.ic_pie_refresh); - mPie.addItem(mRefresh); + mNewTab = makeMenuView(R.drawable.ic_pie_new_tab); + mPie.addItem(mNewTab); mBack = makeMenuView(R.drawable.ic_pie_back); mPie.addItem(mBack); mUrl = makeMenuView(R.drawable.ic_pie_web); mPie.addItem(mUrl); mBookmarks = makeMenuView(R.drawable.ic_pie_bookmarks); mPie.addItem(mBookmarks); - mNewTab = makeMenuView(R.drawable.ic_pie_new_tab); - mPie.addItem(mNewTab); mOptions = makeMenuView(R.drawable.ic_pie_more); mPie.addItem(mOptions); - setClickListener(mBack, mForward, mRefresh, mUrl, mOptions, - mBookmarks, mNewTab); + setClickListener(mBack, + mUrl, + mOptions, + mBookmarks, + mNewTab + ); mPie.setController(this); } container.addView(mPie); diff --git a/src/com/android/browser/TitleBarXLarge.java b/src/com/android/browser/TitleBarXLarge.java index 14e7c7207..d5a6f9735 100644 --- a/src/com/android/browser/TitleBarXLarge.java +++ b/src/com/android/browser/TitleBarXLarge.java @@ -170,17 +170,6 @@ public class TitleBarXLarge extends TitleBarBase mUseQuickControls = useQuickControls; mUrlInput.setUseQuickControls(mUseQuickControls); setLayoutParams(makeLayoutParams()); - if (mUseQuickControls) { - mBackButton.setVisibility(View.GONE); - mForwardButton.setVisibility(View.GONE); - mStopButton.setVisibility(View.GONE); - mAllButton.setVisibility(View.GONE); - } else { - mBackButton.setVisibility(View.VISIBLE); - mForwardButton.setVisibility(View.VISIBLE); - mStopButton.setVisibility(View.VISIBLE); - mAllButton.setVisibility(View.VISIBLE); - } } void setShowProgressOnly(boolean progress) { @@ -207,6 +196,9 @@ public class TitleBarXLarge extends TitleBarBase } else if (!mUrlInput.needsUpdate()) { mUrlInput.dismissDropDown(); mUrlInput.hideIME(); + if (mUseQuickControls) { + mUi.hideTitleBar(); + } } mUrlInput.clearNeedsUpdate(); } diff --git a/src/com/android/browser/UrlInputView.java b/src/com/android/browser/UrlInputView.java index 2ec21111b..c9f4c6a9d 100644 --- a/src/com/android/browser/UrlInputView.java +++ b/src/com/android/browser/UrlInputView.java @@ -57,7 +57,6 @@ public class UrlInputView extends AutoCompleteTextView private View mContainer; private boolean mLandscape; private boolean mIncognitoMode; - private int mVOffset; private boolean mNeedsUpdate; public UrlInputView(Context context, AttributeSet attrs, int defStyle) { @@ -84,7 +83,6 @@ public class UrlInputView extends AutoCompleteTextView onConfigurationChanged(ctx.getResources().getConfiguration()); setThreshold(1); setOnItemClickListener(this); - mVOffset = 0; mNeedsUpdate = false; } @@ -109,9 +107,6 @@ public class UrlInputView extends AutoCompleteTextView } void setUseQuickControls(boolean useQuickControls) { - mVOffset = (useQuickControls - ? (int) getResources().getDimension(R.dimen.dropdown_offset) - : 0); mAdapter.setReverseResults(useQuickControls); } @@ -159,7 +154,6 @@ public class UrlInputView extends AutoCompleteTextView if (getLeft() != -getDropDownHorizontalOffset()) { setDropDownHorizontalOffset(-getLeft()); } - setDropDownVerticalOffset(mVOffset); } @Override diff --git a/src/com/android/browser/XLargeUi.java b/src/com/android/browser/XLargeUi.java index 8c7756b62..d3f83f9ad 100644 --- a/src/com/android/browser/XLargeUi.java +++ b/src/com/android/browser/XLargeUi.java @@ -32,6 +32,7 @@ import android.view.KeyEvent; import android.view.View; import android.webkit.WebChromeClient.CustomViewCallback; import android.webkit.WebView; +import android.widget.FrameLayout; import java.util.List; @@ -333,7 +334,6 @@ public class XLargeUi extends BaseUi implements ScrollListener { protected void showTitleBar() { if (canShowTitleBar()) { if (mUseQuickControls) { - setTitleGravity(Gravity.BOTTOM); mContentView.addView(mTitleBar); } else { setTitleGravity(Gravity.TOP); @@ -347,9 +347,10 @@ public class XLargeUi extends BaseUi implements ScrollListener { protected void hideTitleBar() { if (isTitleBarShowing()) { mTabBar.onHideTitleBar(); - setTitleGravity(Gravity.NO_GRAVITY); if (mUseQuickControls) { mContentView.removeView(mTitleBar); + } else { + setTitleGravity(Gravity.NO_GRAVITY); } super.hideTitleBar(); } @@ -364,6 +365,18 @@ public class XLargeUi extends BaseUi implements ScrollListener { return mTitleBar; } + @Override + protected void setTitleGravity(int gravity) { + if (mUseQuickControls) { + FrameLayout.LayoutParams lp = + (FrameLayout.LayoutParams) mTitleBar.getLayoutParams(); + lp.gravity = gravity; + mTitleBar.setLayoutParams(lp); + } else { + super.setTitleGravity(gravity); + } + } + // action mode callbacks @Override diff --git a/src/com/android/browser/view/PieMenu.java b/src/com/android/browser/view/PieMenu.java index 5185adbbf..080c2579a 100644 --- a/src/com/android/browser/view/PieMenu.java +++ b/src/com/android/browser/view/PieMenu.java @@ -20,15 +20,21 @@ import com.android.browser.R; import android.content.Context; import android.content.res.Resources; +import android.graphics.Bitmap; +import android.graphics.BitmapShader; import android.graphics.Canvas; +import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Path; import android.graphics.Point; import android.graphics.PointF; import android.graphics.Rect; import android.graphics.RectF; +import android.graphics.Shader; +import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.view.MotionEvent; +import android.view.SoundEffectConstants; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; @@ -64,6 +70,17 @@ public class PieMenu extends FrameLayout { private boolean mDirty; + private Drawable mActiveDrawable; + private Drawable mInactiveDrawable; + private final Paint mActiveShaderPaint = new Paint(); + private final Paint mInactiveShaderPaint = new Paint(); + private final Matrix mActiveMatrix = new Matrix(); + private final Matrix mInactiveMatrix = new Matrix(); + + private BitmapShader mActiveShader; + private BitmapShader mInactiveShader; + + /** * @param context * @param attrs @@ -111,6 +128,37 @@ public class PieMenu extends FrameLayout { setDrawingCacheEnabled(false); mCenter = new Point(0,0); mDirty = true; + mActiveShaderPaint.setStyle(Paint.Style.FILL); + mActiveShaderPaint.setAntiAlias(true); + + mInactiveShaderPaint.setStyle(Paint.Style.FILL); + mInactiveShaderPaint.setAntiAlias(true); + mActiveDrawable = res.getDrawable(R.drawable.qc_background_selected); + mInactiveDrawable = res.getDrawable(R.drawable.qc_background_normal); + + Bitmap activeTexture = getDrawableAsBitmap(mActiveDrawable, + mActiveDrawable.getIntrinsicWidth(), + mActiveDrawable.getIntrinsicHeight()); + Bitmap inactiveTexture = getDrawableAsBitmap(mInactiveDrawable, + mInactiveDrawable.getIntrinsicWidth(), + mInactiveDrawable.getIntrinsicHeight()); + + mActiveShader = new BitmapShader(activeTexture, + Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); + mActiveShaderPaint.setShader(mActiveShader); + + mInactiveShader = new BitmapShader(inactiveTexture, + Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); + mInactiveShaderPaint.setShader(mInactiveShader); + + } + + private static Bitmap getDrawableAsBitmap(Drawable drawable, int width, int height) { + Bitmap b = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); + Canvas c = new Canvas(b); + drawable.setBounds(0, 0, width, height); + drawable.draw(c); + return b; } public void setController(PieController ctl) { @@ -268,10 +316,15 @@ public class PieMenu extends FrameLayout { tag.sweep = sweep; tag.inner = inner; tag.outer = outer; - - Paint p = item.isPressed() ? mSelectedPaint : mPaint; - canvas.drawPath(slice, p); int state = canvas.save(); + int[] topLeft = new int[2]; + getLocationInWindow(topLeft); + topLeft[0] = mCenter.x - outer; + topLeft[1] = mCenter.y - outer; + Paint paint = item.isPressed() ? mActiveShaderPaint : mInactiveShaderPaint; + drawClipped(canvas, paint, slice, topLeft, item.isPressed()); + canvas.restoreToCount(state); + state = canvas.save(); if (onTheLeft()) { canvas.scale(-1, 1); } @@ -287,6 +340,16 @@ public class PieMenu extends FrameLayout { return newanchor; } + private void drawClipped(Canvas canvas, Paint paint, Path clipPath, int[] pos, + boolean selected) { + // TODO: We should change the matrix/shader only when needed + final Matrix matrix = selected ? mActiveMatrix : mInactiveMatrix; + matrix.setTranslate(pos[0], pos[1]); + (selected ? mActiveShader : mInactiveShader).setLocalMatrix(matrix); + canvas.drawPath(clipPath, paint); + } + + /** * converts a * @param angle from 0..PI to Android degrees (clockwise starting at 3 o'clock) @@ -391,6 +454,7 @@ public class PieMenu extends FrameLayout { } if (view != null) { // clear up stack + playSoundEffect(SoundEffectConstants.CLICK); MenuTag tag = (MenuTag) view.getTag(); int i = mStack.size() - 1; while (i > 0) { |
