Merge "Fix WebTextView rings" into ics-mr1

This commit is contained in:
Bart Sears
2011-12-07 11:41:57 -08:00
committed by Android (Google) Code Review

View File

@@ -19,10 +19,13 @@ package android.webkit;
import android.content.Context; import android.content.Context;
import android.graphics.Canvas; import android.graphics.Canvas;
import android.graphics.Color; import android.graphics.Color;
import android.graphics.ColorFilter;
import android.graphics.Paint; import android.graphics.Paint;
import android.graphics.Paint.Style; import android.graphics.Paint.Style;
import android.graphics.PixelFormat;
import android.graphics.Rect; import android.graphics.Rect;
import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.Message; import android.os.Message;
@@ -51,7 +54,6 @@ import android.view.ViewGroup;
import android.view.inputmethod.EditorInfo; import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputConnection; import android.view.inputmethod.InputConnection;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
import android.widget.AbsoluteLayout;
import android.widget.AbsoluteLayout.LayoutParams; import android.widget.AbsoluteLayout.LayoutParams;
import android.widget.AdapterView; import android.widget.AdapterView;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
@@ -74,7 +76,6 @@ import java.util.ArrayList;
static final String LOGTAG = "webtextview"; static final String LOGTAG = "webtextview";
private Paint mRingPaint;
private int mRingInset; private int mRingInset;
private WebView mWebView; private WebView mWebView;
@@ -207,13 +208,51 @@ import java.util.ArrayList;
} }
} }
}; };
float ringWidth = 4f * context.getResources().getDisplayMetrics().density;
mReceiver = new MyResultReceiver(mHandler); mReceiver = new MyResultReceiver(mHandler);
mRingPaint = new Paint(); float ringWidth = 2f * context.getResources().getDisplayMetrics().density;
mRingPaint.setColor(0x6633b5e5);
mRingPaint.setStrokeWidth(ringWidth);
mRingPaint.setStyle(Style.FILL);
mRingInset = (int) ringWidth; mRingInset = (int) ringWidth;
setBackgroundDrawable(new BackgroundDrawable(mRingInset));
setPadding(getPaddingLeft(), getPaddingTop(), getPaddingRight(),
getPaddingBottom());
}
private static class BackgroundDrawable extends Drawable {
private Paint mPaint = new Paint();
private int mBorderWidth;
private Rect mInsetRect = new Rect();
public BackgroundDrawable(int width) {
mPaint = new Paint();
mPaint.setStrokeWidth(width);
mBorderWidth = width;
}
@Override
public void draw(Canvas canvas) {
mPaint.setColor(0x6633b5e5);
canvas.drawRect(getBounds(), mPaint);
mInsetRect.left = getBounds().left + mBorderWidth;
mInsetRect.top = getBounds().top + mBorderWidth;
mInsetRect.right = getBounds().right - mBorderWidth;
mInsetRect.bottom = getBounds().bottom - mBorderWidth;
mPaint.setColor(Color.WHITE);
canvas.drawRect(mInsetRect, mPaint);
}
@Override
public void setAlpha(int alpha) {
}
@Override
public void setColorFilter(ColorFilter cf) {
}
@Override
public int getOpacity() {
return PixelFormat.TRANSLUCENT;
}
} }
public void setAutoFillable(int queryId) { public void setAutoFillable(int queryId) {
@@ -223,35 +262,9 @@ import java.util.ArrayList;
} }
@Override @Override
protected void onDraw(Canvas canvas) { public void setPadding(int left, int top, int right, int bottom) {
super.onDraw(canvas); super.setPadding(left + mRingInset, top + mRingInset,
if (isFocused()) { right + mRingInset, bottom + mRingInset);
final int ib = getHeight() - mRingInset;
canvas.drawRect(0, 0, getWidth(), mRingInset, mRingPaint);
canvas.drawRect(0, ib, getWidth(), getHeight(), mRingPaint);
canvas.drawRect(0, mRingInset, mRingInset, ib, mRingPaint);
canvas.drawRect(getWidth() - mRingInset, mRingInset, getWidth(), ib, mRingPaint);
}
}
private void growOrShrink(boolean grow) {
AbsoluteLayout.LayoutParams lp = (AbsoluteLayout.LayoutParams) getLayoutParams();
if (grow) {
lp.x -= mRingInset;
lp.y -= mRingInset;
lp.width += 2 * mRingInset;
lp.height += 2 * mRingInset;
setPadding(getPaddingLeft() + mRingInset, getPaddingTop() + mRingInset,
getPaddingRight() + mRingInset, getPaddingBottom() + mRingInset);
} else {
lp.x += mRingInset;
lp.y += mRingInset;
lp.width -= 2 * mRingInset;
lp.height -= 2 * mRingInset;
setPadding(getPaddingLeft() - mRingInset, getPaddingTop() - mRingInset,
getPaddingRight() - mRingInset, getPaddingBottom() - mRingInset);
}
setLayoutParams(lp);
} }
@Override @Override
@@ -555,7 +568,6 @@ import java.util.ArrayList;
} else if (!mInsideRemove) { } else if (!mInsideRemove) {
mWebView.setActive(false); mWebView.setActive(false);
} }
growOrShrink(focused);
mFromFocusChange = false; mFromFocusChange = false;
} }
@@ -966,6 +978,10 @@ import java.util.ArrayList;
*/ */
/* package */ void setRect(int x, int y, int width, int height) { /* package */ void setRect(int x, int y, int width, int height) {
LayoutParams lp = (LayoutParams) getLayoutParams(); LayoutParams lp = (LayoutParams) getLayoutParams();
x -= mRingInset;
y -= mRingInset;
width += 2 * mRingInset;
height += 2 * mRingInset;
boolean needsUpdate = false; boolean needsUpdate = false;
if (null == lp) { if (null == lp) {
lp = new LayoutParams(width, height, x, y); lp = new LayoutParams(width, height, x, y);