summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichael Kolb <kolby@google.com>2011-02-25 09:45:06 -0800
committerMichael Kolb <kolby@google.com>2011-03-02 17:32:24 -0800
commit2a56ecaf153d788a1acebc54b670347a1a58d693 (patch)
treebcb217a561c8cd04db76be511e813fcb1b8cb1c6 /src
parent0803e101ec185564b76874af0148e99de41ff9db (diff)
downloadpackages_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.java16
-rw-r--r--src/com/android/browser/TitleBarXLarge.java14
-rw-r--r--src/com/android/browser/UrlInputView.java6
-rw-r--r--src/com/android/browser/XLargeUi.java17
-rw-r--r--src/com/android/browser/view/PieMenu.java70
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) {