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

Commit e07f8726 authored by Beverly Tai's avatar Beverly Tai Committed by Automerger Merge Worker
Browse files

Merge "Don't update lock icon location based on rotation" into sc-dev am: e9a03ecd

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14802970

Change-Id: I1dcd71fb4bea0034d2e6e0e4047bd4496ee80975
parents 0fe981de e9a03ecd
Loading
Loading
Loading
Loading
+2 −34
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@ import android.content.Context;
import android.graphics.PointF;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.Surface;
import android.widget.FrameLayout;
import android.widget.ImageView;

@@ -30,44 +29,25 @@ import android.widget.ImageView;
 */
public class LockIconView extends ImageView {
    @NonNull private final RectF mSensorRect;
    @NonNull private final Context mContext;

    @NonNull private PointF mLockIconCenter = new PointF(0f, 0f);
    private int mRadius;

    public LockIconView(Context context, AttributeSet attrs) {
        super(context, attrs);
        mContext = context;
        mSensorRect = new RectF();
    }

    void setLocation(@NonNull PointF center, int radius) {
        mLockIconCenter = center;
        mRadius = radius;
    }

    // The "h" and "w" are the display's height and width relative to its current rotation.
    private void updateSensorRect(int h, int w) {
        // mSensorProps coordinates assume portrait mode.
        // mSensorProps coordinates assume portrait mode which is OK b/c the keyguard is always in
        // portrait.
        mSensorRect.set(mLockIconCenter.x - mRadius,
                mLockIconCenter.y - mRadius,
                mLockIconCenter.x + mRadius,
                mLockIconCenter.y + mRadius);

        // Transform mSensorRect if the device is in landscape mode.
        switch (mContext.getDisplay().getRotation()) {
            case Surface.ROTATION_90:
                mSensorRect.set(mSensorRect.top, h - mSensorRect.right, mSensorRect.bottom,
                        h - mSensorRect.left);
                break;
            case Surface.ROTATION_270:
                mSensorRect.set(w - mSensorRect.bottom, mSensorRect.left, w - mSensorRect.top,
                        mSensorRect.right);
                break;
            default:
                // Do nothing to stay in portrait mode.
        }

        setX(mSensorRect.left);
        setY(mSensorRect.top);
        setLayoutParams(new FrameLayout.LayoutParams(
@@ -75,18 +55,6 @@ public class LockIconView extends ImageView {
                (int) (mSensorRect.bottom - mSensorRect.top)));
    }

    @Override
    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
        super.onLayout(changed, left, top, right, bottom);
        // Always re-compute the layout regardless of whether "changed" is true. It is usually false
        // when the device goes from landscape to seascape and vice versa, but mSensorRect and
        // its dependencies need to be recalculated to stay at the same physical location on the
        // screen.
        final int w = getLayoutParams().width;
        final int h = getLayoutParams().height;
        updateSensorRect(h, w);
    }

    @Override
    public boolean hasOverlappingRendering() {
        return false;