Merge "Don't update lock icon location based on rotation" into sc-dev am: e9a03ecd5c
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14802970 Change-Id: I6a1f6672b030c0a179ef894f2681012f0d65fef8
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user