summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Andrei Stingaceanu <stg@google.com> 2017-10-13 16:41:28 +0100
committer Andrei Stingaceanu <stg@google.com> 2017-10-16 11:53:52 +0100
commit451f947ffa8af1fa2913af0848b52e826e30414b (patch)
treea5faef14026e0baf089685da0110c23f89a0e462
parent92ec65eee14217a257e07886f04cfa436a64db6a (diff)
[Magnifier - 4] Batch of tweaks
* magnifier zoom from 1.5 to 1.25 * max scale from 10 to 4 * magnifier shows over the text if there is no more space above instead of showing underneath the cursor * paused the blink while showing the magnifier and resumed when dismissing Bug: 63531115 Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest Test: bit CtsWidgetTestCases:android.widget.cts.TextViewTest Test: manual test that shows the magnifier working Change-Id: Ief3e0b7dc9e287e7dd1a9102548b1861598b69c4
-rw-r--r--core/java/android/widget/Editor.java4
-rw-r--r--core/java/com/android/internal/widget/Magnifier.java26
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() {