diff options
| -rw-r--r-- | core/java/android/widget/Editor.java | 4 | ||||
| -rw-r--r-- | core/java/com/android/internal/widget/Magnifier.java | 26 |
2 files changed, 23 insertions, 7 deletions
diff --git a/core/java/android/widget/Editor.java b/core/java/android/widget/Editor.java index afd11881e6d5..91f6799e26ed 100644 --- a/core/java/android/widget/Editor.java +++ b/core/java/android/widget/Editor.java @@ -165,7 +165,7 @@ public class Editor { private static final int MENU_ITEM_ORDER_PASTE_AS_PLAIN_TEXT = 11; private static final int MENU_ITEM_ORDER_PROCESS_TEXT_INTENT_ACTIONS_START = 100; - private static final float MAGNIFIER_ZOOM = 1.5f; + private static final float MAGNIFIER_ZOOM = 1.25f; @IntDef({MagnifierHandleTrigger.SELECTION_START, MagnifierHandleTrigger.SELECTION_END, MagnifierHandleTrigger.INSERTION}) @@ -4550,12 +4550,14 @@ public class Editor { final float centerYOnScreen = yPosInView + mTextView.getTotalPaddingTop() - mTextView.getScrollY() + coordinatesOnScreen[1]; + suspendBlink(); mMagnifier.show(centerXOnScreen, centerYOnScreen, MAGNIFIER_ZOOM); } protected final void dismissMagnifier() { if (mMagnifier != null) { mMagnifier.dismiss(); + resumeBlink(); } } diff --git a/core/java/com/android/internal/widget/Magnifier.java b/core/java/com/android/internal/widget/Magnifier.java index 86e7b38a8bc8..284f2b2b7e12 100644 --- a/core/java/com/android/internal/widget/Magnifier.java +++ b/core/java/com/android/internal/widget/Magnifier.java @@ -41,6 +41,8 @@ import com.android.internal.util.Preconditions; */ public final class Magnifier { private static final String LOG_TAG = "magnifier"; + private static final int MINIMUM_MAGNIFIER_SCALE = 1; + private static final int MAXIMUM_MAGNIFIER_SCALE = 4; // The view for which this magnifier is attached. private final View mView; // The window containing the magnifier. @@ -94,7 +96,23 @@ public final class Magnifier { */ public void show(@FloatRange(from=0) float centerXOnScreen, @FloatRange(from=0) float centerYOnScreen, - @FloatRange(from=1, to=10) float scale) { + @FloatRange(from=MINIMUM_MAGNIFIER_SCALE, to=MAXIMUM_MAGNIFIER_SCALE) float scale) { + if (scale > MAXIMUM_MAGNIFIER_SCALE) { + scale = MAXIMUM_MAGNIFIER_SCALE; + } + + if (scale < MINIMUM_MAGNIFIER_SCALE) { + scale = MINIMUM_MAGNIFIER_SCALE; + } + + if (centerXOnScreen < 0) { + centerXOnScreen = 0; + } + + if (centerYOnScreen < 0) { + centerYOnScreen = 0; + } + maybeResizeBitmap(scale); configureCoordinates(centerXOnScreen, centerYOnScreen); performPixelCopy(); @@ -144,12 +162,8 @@ public final class Magnifier { final int verticalMagnifierOffset = mView.getContext().getResources().getDimensionPixelSize( R.dimen.magnifier_offset); - final int availableTopSpace = (mCenterZoomCoords.y - mWindowHeight / 2) - - verticalMagnifierOffset - (mBitmap.getHeight() / 2); - mWindowCoords.x = mCenterZoomCoords.x - mWindowWidth / 2; - mWindowCoords.y = mCenterZoomCoords.y - mWindowHeight / 2 - + verticalMagnifierOffset * (availableTopSpace > 0 ? -1 : 1); + mWindowCoords.y = mCenterZoomCoords.y - mWindowHeight / 2 - verticalMagnifierOffset; } private void performPixelCopy() { |