Cleaup gesture preview drawing code a bit

Change-Id: Ie75d497ba88805d945d6039ecad09ed0e8e5e4d3
main
Tadashi G. Takaoka 2012-08-20 14:27:45 +09:00
parent 4c6db0592e
commit 978c0fc878
1 changed files with 22 additions and 19 deletions

View File

@ -50,6 +50,9 @@ public class PreviewPlacerView extends RelativeLayout {
private final SparseArray<PointerTracker> mPointers = new SparseArray<PointerTracker>();
private String mGestureFloatingPreviewText;
private int mLastPointerX;
private int mLastPointerY;
private boolean mDrawsGesturePreviewTrail;
private boolean mDrawsGestureFloatingPreviewText;
@ -154,32 +157,31 @@ public class PreviewPlacerView extends RelativeLayout {
public void invalidatePointer(PointerTracker tracker) {
synchronized (mPointers) {
mPointers.put(tracker.mPointerId, tracker);
}
mLastPointerX = tracker.getLastX();
mLastPointerY = tracker.getLastY();
// TODO: Should narrow the invalidate region.
invalidate();
}
}
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
synchronized (mPointers) {
canvas.translate(mXOrigin, mYOrigin);
if (mDrawsGesturePreviewTrail) {
synchronized (mPointers) {
final int trackerCount = mPointers.size();
boolean hasDrawnFloatingPreviewText = false;
for (int index = 0; index < trackerCount; index++) {
final PointerTracker tracker = mPointers.valueAt(index);
if (mDrawsGesturePreviewTrail) {
tracker.drawGestureTrail(canvas, mGesturePaint);
}
// TODO: Figure out more cleaner way to draw gesture preview text.
if (mDrawsGestureFloatingPreviewText && !hasDrawnFloatingPreviewText) {
drawGestureFloatingPreviewText(canvas, tracker, mGestureFloatingPreviewText);
hasDrawnFloatingPreviewText = true;
}
}
if (mDrawsGestureFloatingPreviewText) {
drawGestureFloatingPreviewText(canvas, mGestureFloatingPreviewText);
}
canvas.translate(-mXOrigin, -mYOrigin);
}
}
public void setGestureFloatingPreviewText(String gestureFloatingPreviewText) {
mGestureFloatingPreviewText = gestureFloatingPreviewText;
@ -194,15 +196,16 @@ public class PreviewPlacerView extends RelativeLayout {
mDrawingHandler.cancelAllMessages();
}
private void drawGestureFloatingPreviewText(Canvas canvas, PointerTracker tracker,
String gestureFloatingPreviewText) {
private void drawGestureFloatingPreviewText(Canvas canvas, String gestureFloatingPreviewText) {
if (TextUtils.isEmpty(gestureFloatingPreviewText)) {
return;
}
final Paint paint = mTextPaint;
final int lastX = tracker.getLastX();
final int lastY = tracker.getLastY();
// TODO: Figure out how we should deal with the floating preview text with multiple moving
// fingers.
final int lastX = mLastPointerX;
final int lastY = mLastPointerY;
final int textSize = (int)paint.getTextSize();
final int canvasWidth = canvas.getWidth();