Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 66b191da authored by Svetoslav Ganov's avatar Svetoslav Ganov
Browse files

Increasing the tap radius for the handle in MultiWaveView to improve accessibility

bug:5253968

Change-Id: Ibe5a3a2453db1bbeaf8e818430685b48460ab06c
parent a6ec356d
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
@@ -79,6 +79,7 @@ public class MultiWaveView extends View {
    private static final int HIDE_ANIMATION_DURATION = RETURN_TO_HOME_DELAY;
    private static final int SHOW_ANIMATION_DURATION = 0;
    private static final int SHOW_ANIMATION_DELAY = 0;
    private static final float TAP_RADIUS_SCALE_ACCESSIBILITY_ENABLED = 1.3f;
    private TimeInterpolator mChevronAnimationInterpolator = Ease.Quad.easeOut;

    private ArrayList<TargetDrawable> mTargetDrawables = new ArrayList<TargetDrawable>();
@@ -663,7 +664,7 @@ public class MultiWaveView extends View {
        final float y = event.getY();
        final float dx = x - mWaveCenterX;
        final float dy = y - mWaveCenterY;
        if (dist2(dx,dy) <= square(mTapRadius)) {
        if (dist2(dx,dy) <= getScaledTapRadiusSquared()) {
            if (DEBUG) Log.v(TAG, "** Handle HIT");
            switchToState(STATE_FIRST_TOUCH, x, y);
            moveHandleTo(x, y, false);
@@ -684,7 +685,7 @@ public class MultiWaveView extends View {
                case MotionEvent.ACTION_HOVER_MOVE:
                    final float dx = event.getX() - mWaveCenterX;
                    final float dy = event.getY() - mWaveCenterY;
                    if (dist2(dx,dy) <= square(mTapRadius)) {
                    if (dist2(dx,dy) <= getScaledTapRadiusSquared()) {
                        if (!mWaveHovered) {
                            mWaveHovered = true;
                            final long timeSinceLastHoverExitMillis =
@@ -894,6 +895,16 @@ public class MultiWaveView extends View {
        return dx*dx + dy*dy;
    }

    private float getScaledTapRadiusSquared() {
        final float scaledTapRadius;
        if (AccessibilityManager.getInstance(mContext).isEnabled()) {
            scaledTapRadius = TAP_RADIUS_SCALE_ACCESSIBILITY_ENABLED * mTapRadius;
        } else {
            scaledTapRadius = mTapRadius;
        }
        return square(scaledTapRadius);
    }

    private void announceTargets() {
        StringBuilder utterance = new StringBuilder();
        final int targetCount = mTargetDrawables.size();