From 72cc3702d252db7440c1d1fa63e7d81c8d0e8ffd Mon Sep 17 00:00:00 2001 From: Adrian Roos Date: Thu, 18 Sep 2014 17:25:09 +0200 Subject: [PATCH] Fix wrong face unlock size Bug: 17533062 Change-Id: I532d7197fcd59baffd8f6c4e76a9fb8eda389eac --- packages/SystemUI/res/values/dimens.xml | 6 ++- .../phone/KeyguardBottomAreaView.java | 42 ++++++++++++++++++- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index 37ee0aea13019..002a9702b45a6 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -452,10 +452,14 @@ 100dp - + 56dp 56dp + + 24dp + 24dp + 65dp diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java index e323dd615989f..754fade755566 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java @@ -25,6 +25,8 @@ import android.content.IntentFilter; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.res.Configuration; +import android.graphics.drawable.Drawable; +import android.graphics.drawable.InsetDrawable; import android.os.AsyncTask; import android.os.Bundle; import android.os.RemoteException; @@ -91,6 +93,8 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL private final TrustDrawable mTrustDrawable; + private int mLastUnlockIconRes = 0; + public KeyguardBottomAreaView(Context context) { this(context, null); } @@ -380,7 +384,17 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL ? com.android.internal.R.drawable.ic_account_circle : mUnlockMethodCache.isMethodInsecure() ? R.drawable.ic_lock_open_24dp : R.drawable.ic_lock_24dp; - mLockIcon.setImageResource(iconRes); + if (mLastUnlockIconRes != iconRes) { + Drawable icon = mContext.getDrawable(iconRes); + int iconHeight = getResources().getDimensionPixelSize( + R.dimen.keyguard_affordance_icon_height); + int iconWidth = getResources().getDimensionPixelSize( + R.dimen.keyguard_affordance_icon_width); + if (icon.getIntrinsicHeight() != iconHeight || icon.getIntrinsicWidth() != iconWidth) { + icon = new IntrinsicSizeDrawable(icon, iconWidth, iconHeight); + } + mLockIcon.setImageDrawable(icon); + } boolean trustManaged = mUnlockMethodCache.isTrustManaged(); mTrustDrawable.setTrustManaged(trustManaged); updateLockIconClickability(); @@ -469,4 +483,30 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL KeyguardIndicationController keyguardIndicationController) { mIndicationController = keyguardIndicationController; } + + + /** + * A wrapper around another Drawable that overrides the intrinsic size. + */ + private static class IntrinsicSizeDrawable extends InsetDrawable { + + private final int mIntrinsicWidth; + private final int mIntrinsicHeight; + + public IntrinsicSizeDrawable(Drawable drawable, int intrinsicWidth, int intrinsicHeight) { + super(drawable, 0); + mIntrinsicWidth = intrinsicWidth; + mIntrinsicHeight = intrinsicHeight; + } + + @Override + public int getIntrinsicWidth() { + return mIntrinsicWidth; + } + + @Override + public int getIntrinsicHeight() { + return mIntrinsicHeight; + } + } }