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

Commit 4d450edb authored by Tracy Zhou's avatar Tracy Zhou Committed by android-build-merger
Browse files

Merge "Move rotation button closer to the edge of the screen." into qt-dev

am: b617827f

Change-Id: I5d7397fa9bdbf8e527daebcc6d27dd0a60cc39c5
parents 4af5657d b617827f
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -331,7 +331,7 @@
    <!-- Nav bar button default ordering/layout -->
    <!-- Nav bar button default ordering/layout -->
    <string name="config_navBarLayout" translatable="false">left[.5W],back[1WC];home;recent[1WC],right[.5W]</string>
    <string name="config_navBarLayout" translatable="false">left[.5W],back[1WC];home;recent[1WC],right[.5W]</string>
    <string name="config_navBarLayoutQuickstep" translatable="false">back[1.7WC];home;contextual[1.7WC]</string>
    <string name="config_navBarLayoutQuickstep" translatable="false">back[1.7WC];home;contextual[1.7WC]</string>
    <string name="config_navBarLayoutHandle" translatable="false">start_contextual[.1WC];home_handle;ime_switcher[.1WC]</string>
    <string name="config_navBarLayoutHandle" translatable="false">start_contextual[40AC];home_handle;ime_switcher[40AC]</string>


    <bool name="quick_settings_show_full_alarm">false</bool>
    <bool name="quick_settings_show_full_alarm">false</bool>


+22 −7
Original line number Original line Diff line number Diff line
@@ -84,6 +84,8 @@ public class NavigationBarInflaterView extends FrameLayout
    public static final String KEY_CODE_END = ")";
    public static final String KEY_CODE_END = ")";
    private static final String WEIGHT_SUFFIX = "W";
    private static final String WEIGHT_SUFFIX = "W";
    private static final String WEIGHT_CENTERED_SUFFIX = "WC";
    private static final String WEIGHT_CENTERED_SUFFIX = "WC";
    private static final String ABSOLUTE_SUFFIX = "A";
    private static final String ABSOLUTE_VERTICAL_CENTERED_SUFFIX = "C";


    private final List<NavBarButtonProvider> mPlugins = new ArrayList<>();
    private final List<NavBarButtonProvider> mPlugins = new ArrayList<>();


@@ -353,17 +355,20 @@ public class NavigationBarInflaterView extends FrameLayout
        String sizeStr = extractSize(buttonSpec);
        String sizeStr = extractSize(buttonSpec);
        if (sizeStr == null) return v;
        if (sizeStr == null) return v;


        if (sizeStr.contains(WEIGHT_SUFFIX)) {
        if (sizeStr.contains(WEIGHT_SUFFIX) || sizeStr.contains(ABSOLUTE_SUFFIX)) {
            // To support gravity, wrap in RelativeLayout and apply gravity to it.
            // To support gravity, wrap in RelativeLayout and apply gravity to it.
            // Children wanting to use gravity must be smaller then the frame.
            // Children wanting to use gravity must be smaller then the frame.
            float weight = Float.parseFloat(sizeStr.substring(0, sizeStr.indexOf(WEIGHT_SUFFIX)));
            ReverseRelativeLayout frame = new ReverseRelativeLayout(mContext);
            ReverseRelativeLayout frame = new ReverseRelativeLayout(mContext);
            LayoutParams childParams = new LayoutParams(v.getLayoutParams());
            LayoutParams childParams = new LayoutParams(v.getLayoutParams());


            // Compute gravity to apply
            // Compute gravity to apply
            int gravity = (landscape) ? (start ? Gravity.TOP : Gravity.BOTTOM)
            int gravity = (landscape) ? (start ? Gravity.TOP : Gravity.BOTTOM)
                    : (start ? Gravity.START : Gravity.END);
                    : (start ? Gravity.START : Gravity.END);
            if (sizeStr.endsWith(WEIGHT_CENTERED_SUFFIX)) gravity = Gravity.CENTER;
            if (sizeStr.endsWith(WEIGHT_CENTERED_SUFFIX)) {
                gravity = Gravity.CENTER;
            } else if (sizeStr.endsWith(ABSOLUTE_VERTICAL_CENTERED_SUFFIX)) {
                gravity = Gravity.CENTER_VERTICAL;
            }


            // Set default gravity, flipped if needed in reversed layouts (270 RTL and 90 LTR)
            // Set default gravity, flipped if needed in reversed layouts (270 RTL and 90 LTR)
            frame.setDefaultGravity(gravity);
            frame.setDefaultGravity(gravity);
@@ -371,8 +376,16 @@ public class NavigationBarInflaterView extends FrameLayout


            frame.addView(v, childParams);
            frame.addView(v, childParams);


            if (sizeStr.contains(WEIGHT_SUFFIX)) {
                // Use weighting to set the width of the frame
                // Use weighting to set the width of the frame
                float weight = Float.parseFloat(
                        sizeStr.substring(0, sizeStr.indexOf(WEIGHT_SUFFIX)));
                frame.setLayoutParams(new LinearLayout.LayoutParams(0, MATCH_PARENT, weight));
                frame.setLayoutParams(new LinearLayout.LayoutParams(0, MATCH_PARENT, weight));
            } else {
                int width = (int) convertDpToPx(mContext,
                        Float.parseFloat(sizeStr.substring(0, sizeStr.indexOf(ABSOLUTE_SUFFIX))));
                frame.setLayoutParams(new LinearLayout.LayoutParams(width, MATCH_PARENT));
            }


            // Ensure ripples can be drawn outside bounds
            // Ensure ripples can be drawn outside bounds
            frame.setClipChildren(false);
            frame.setClipChildren(false);
@@ -490,8 +503,6 @@ public class NavigationBarInflaterView extends FrameLayout
        }
        }
    }
    }




    private void clearViews() {
    private void clearViews() {
        if (mButtonDispatchers != null) {
        if (mButtonDispatchers != null) {
            for (int i = 0; i < mButtonDispatchers.size(); i++) {
            for (int i = 0; i < mButtonDispatchers.size(); i++) {
@@ -508,6 +519,10 @@ public class NavigationBarInflaterView extends FrameLayout
        }
        }
    }
    }


    private static float convertDpToPx(Context context, float dp) {
        return dp * context.getResources().getDisplayMetrics().density;
    }

    @Override
    @Override
    public void onPluginConnected(NavBarButtonProvider plugin, Context context) {
    public void onPluginConnected(NavBarButtonProvider plugin, Context context) {
        mPlugins.add(plugin);
        mPlugins.add(plugin);
+9 −7
Original line number Original line Diff line number Diff line
@@ -34,7 +34,6 @@ import android.graphics.PorterDuff;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffColorFilter;
import android.graphics.PorterDuffColorFilter;
import android.graphics.Rect;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.drawable.AnimatedVectorDrawable;
import android.graphics.drawable.AnimatedVectorDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Drawable;
import android.util.FloatProperty;
import android.util.FloatProperty;
@@ -79,7 +78,6 @@ public class KeyButtonDrawable extends Drawable {


    private final Paint mIconPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG);
    private final Paint mIconPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG);
    private final Paint mShadowPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG);
    private final Paint mShadowPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG);
    private final Paint mOvalBgPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG);
    private final ShadowDrawableState mState;
    private final ShadowDrawableState mState;
    private AnimatedVectorDrawable mAnimatedDrawable;
    private AnimatedVectorDrawable mAnimatedDrawable;


@@ -101,7 +99,6 @@ public class KeyButtonDrawable extends Drawable {
            mAnimatedDrawable = (AnimatedVectorDrawable) mState.mChildState.newDrawable().mutate();
            mAnimatedDrawable = (AnimatedVectorDrawable) mState.mChildState.newDrawable().mutate();
            setDrawableBounds(mAnimatedDrawable);
            setDrawableBounds(mAnimatedDrawable);
        }
        }
        mOvalBgPaint.setColor(mState.mDarkColor);
    }
    }


    public void setDarkIntensity(float intensity) {
    public void setDarkIntensity(float intensity) {
@@ -215,6 +212,15 @@ public class KeyButtonDrawable extends Drawable {
        return mState.mBaseWidth + (mState.mShadowSize + Math.abs(mState.mShadowOffsetX)) * 2;
        return mState.mBaseWidth + (mState.mShadowSize + Math.abs(mState.mShadowOffsetX)) * 2;
    }
    }


    /** Return if the drawable has oval background. */
    public boolean hasOvalBg() {
        return mState.mHasOvalBg;
    }

    public int getDarkColor() {
        return mState.mDarkColor;
    }

    public boolean canAnimate() {
    public boolean canAnimate() {
        return mState.mSupportsAnimation;
        return mState.mSupportsAnimation;
    }
    }
@@ -244,10 +250,6 @@ public class KeyButtonDrawable extends Drawable {
            return;
            return;
        }
        }


        if (mState.mHasOvalBg) {
            canvas.drawOval(new RectF(bounds), mOvalBgPaint);
        }

        if (mAnimatedDrawable != null) {
        if (mAnimatedDrawable != null) {
            mAnimatedDrawable.draw(canvas);
            mAnimatedDrawable.draw(canvas);
        } else {
        } else {
+30 −5
Original line number Original line Diff line number Diff line
@@ -73,6 +73,13 @@ public class KeyButtonRipple extends Drawable {
    private final HashSet<Animator> mRunningAnimations = new HashSet<>();
    private final HashSet<Animator> mRunningAnimations = new HashSet<>();
    private final ArrayList<Animator> mTmpArray = new ArrayList<>();
    private final ArrayList<Animator> mTmpArray = new ArrayList<>();


    public enum Type {
        OVAL,
        ROUNDED_RECT
    }

    private Type mType = Type.ROUNDED_RECT;

    public KeyButtonRipple(Context ctx, View targetView) {
    public KeyButtonRipple(Context ctx, View targetView) {
        mMaxWidth =  ctx.getResources().getDimensionPixelSize(R.dimen.key_button_ripple_max_width);
        mMaxWidth =  ctx.getResources().getDimensionPixelSize(R.dimen.key_button_ripple_max_width);
        mTargetView = targetView;
        mTargetView = targetView;
@@ -86,6 +93,10 @@ public class KeyButtonRipple extends Drawable {
        mDelayTouchFeedback = delay;
        mDelayTouchFeedback = delay;
    }
    }


    public void setType(Type type) {
        mType = type;
    }

    private Paint getRipplePaint() {
    private Paint getRipplePaint() {
        if (mRipplePaint == null) {
        if (mRipplePaint == null) {
            mRipplePaint = new Paint();
            mRipplePaint = new Paint();
@@ -111,9 +122,15 @@ public class KeyButtonRipple extends Drawable {
            final float ry = horizontal ? cy : radius;
            final float ry = horizontal ? cy : radius;
            final float corner = horizontal ? cy : cx;
            final float corner = horizontal ? cy : cx;


            canvas.drawRoundRect(cx - rx, cy - ry,
            if (mType == Type.ROUNDED_RECT) {
                    cx + rx, cy + ry,
                canvas.drawRoundRect(cx - rx, cy - ry, cx + rx, cy + ry, corner, corner, p);
                    corner, corner, p);
            } else {
                canvas.save();
                canvas.translate(cx, cy);
                float r = Math.min(rx, ry);
                canvas.drawOval(-r, -r, r, r, p);
                canvas.restore();
            }
        }
        }
    }
    }


@@ -148,8 +165,16 @@ public class KeyButtonRipple extends Drawable {


    private void drawHardware(RecordingCanvas c) {
    private void drawHardware(RecordingCanvas c) {
        if (mDrawingHardwareGlow) {
        if (mDrawingHardwareGlow) {
            if (mType == Type.ROUNDED_RECT) {
                c.drawRoundRect(mLeftProp, mTopProp, mRightProp, mBottomProp, mRxProp, mRyProp,
                c.drawRoundRect(mLeftProp, mTopProp, mRightProp, mBottomProp, mRxProp, mRyProp,
                        mPaintProp);
                        mPaintProp);
            } else {
                CanvasProperty<Float> cx = CanvasProperty.createFloat(getBounds().width() / 2);
                CanvasProperty<Float> cy = CanvasProperty.createFloat(getBounds().height() / 2);
                int d = Math.min(getBounds().width(), getBounds().height());
                CanvasProperty<Float> r = CanvasProperty.createFloat(1.0f * d / 2);
                c.drawCircle(cx, cy, r, mPaintProp);
            }
        }
        }
    }
    }


+28 −3
Original line number Original line Diff line number Diff line
@@ -25,6 +25,8 @@ import android.app.ActivityManager;
import android.content.Context;
import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Configuration;
import android.content.res.TypedArray;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
import android.graphics.drawable.Icon;
import android.hardware.input.InputManager;
import android.hardware.input.InputManager;
@@ -76,6 +78,8 @@ public class KeyButtonView extends ImageView implements ButtonInterface {
    private final OverviewProxyService mOverviewProxyService;
    private final OverviewProxyService mOverviewProxyService;
    private final MetricsLogger mMetricsLogger = Dependency.get(MetricsLogger.class);
    private final MetricsLogger mMetricsLogger = Dependency.get(MetricsLogger.class);
    private final InputManager mInputManager;
    private final InputManager mInputManager;
    private final Paint mOvalBgPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG);
    private boolean mHasOvalBg = false;


    private final Runnable mCheckLongPress = new Runnable() {
    private final Runnable mCheckLongPress = new Runnable() {
        public void run() {
        public void run() {
@@ -127,6 +131,7 @@ public class KeyButtonView extends ImageView implements ButtonInterface {
        mOverviewProxyService = Dependency.get(OverviewProxyService.class);
        mOverviewProxyService = Dependency.get(OverviewProxyService.class);
        mInputManager = manager;
        mInputManager = manager;
        setBackground(mRipple);
        setBackground(mRipple);
        setWillNotDraw(false);
        forceHasOverlappingRendering(false);
        forceHasOverlappingRendering(false);
    }
    }


@@ -357,7 +362,14 @@ public class KeyButtonView extends ImageView implements ButtonInterface {
    public void setDarkIntensity(float darkIntensity) {
    public void setDarkIntensity(float darkIntensity) {
        Drawable drawable = getDrawable();
        Drawable drawable = getDrawable();
        if (drawable != null) {
        if (drawable != null) {
            ((KeyButtonDrawable) getDrawable()).setDarkIntensity(darkIntensity);
            KeyButtonDrawable keyButtonDrawable = (KeyButtonDrawable) drawable;
            keyButtonDrawable.setDarkIntensity(darkIntensity);
            mHasOvalBg = keyButtonDrawable.hasOvalBg();
            if (mHasOvalBg) {
                mOvalBgPaint.setColor(keyButtonDrawable.getDarkColor());
            }
            mRipple.setType(keyButtonDrawable.hasOvalBg() ? KeyButtonRipple.Type.OVAL
                    : KeyButtonRipple.Type.ROUNDED_RECT);


            // Since we reuse the same drawable for multiple views, we need to invalidate the view
            // Since we reuse the same drawable for multiple views, we need to invalidate the view
            // manually.
            // manually.
@@ -371,10 +383,23 @@ public class KeyButtonView extends ImageView implements ButtonInterface {
        mRipple.setDelayTouchFeedback(shouldDelay);
        mRipple.setDelayTouchFeedback(shouldDelay);
    }
    }


    @Override
    public void draw(Canvas canvas) {
        if (mHasOvalBg) {
            canvas.save();
            int cx = (getLeft() + getRight()) / 2;
            int cy = (getTop() + getBottom()) / 2;
            canvas.translate(cx, cy);
            int d = Math.min(getWidth(), getHeight());
            int r = d / 2;
            canvas.drawOval(-r, -r, r, r, mOvalBgPaint);
            canvas.restore();
        }
        super.draw(canvas);
    }

    @Override
    @Override
    public void setVertical(boolean vertical) {
    public void setVertical(boolean vertical) {
        mIsVertical = vertical;
        mIsVertical = vertical;
    }
    }
}
}