Added foldable assets to bp.
Test: Manually verified with biometricprompt demo app. Fixes: 257135239 Change-Id: Iedc087e93b48a6a266f9f04660aa637df38e2d55
This commit is contained in:
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -18,6 +18,7 @@ package com.android.systemui.biometrics
|
||||
|
||||
import android.annotation.RawRes
|
||||
import android.content.Context
|
||||
import android.content.res.Configuration
|
||||
import android.hardware.fingerprint.FingerprintManager
|
||||
import android.view.DisplayInfo
|
||||
import android.view.Surface
|
||||
@@ -33,15 +34,19 @@ import com.android.systemui.biometrics.AuthBiometricView.STATE_ERROR
|
||||
import com.android.systemui.biometrics.AuthBiometricView.STATE_HELP
|
||||
import com.android.systemui.biometrics.AuthBiometricView.STATE_IDLE
|
||||
import com.android.systemui.biometrics.AuthBiometricView.STATE_PENDING_CONFIRMATION
|
||||
import com.android.systemui.unfold.compat.ScreenSizeFoldProvider
|
||||
import com.android.systemui.unfold.updates.FoldProvider
|
||||
|
||||
/** Fingerprint only icon animator for BiometricPrompt. */
|
||||
open class AuthBiometricFingerprintIconController(
|
||||
context: Context,
|
||||
iconView: LottieAnimationView,
|
||||
protected val iconViewOverlay: LottieAnimationView
|
||||
) : AuthIconController(context, iconView) {
|
||||
) : AuthIconController(context, iconView), FoldProvider.FoldCallback {
|
||||
|
||||
private var isDeviceFolded: Boolean = false
|
||||
private val isSideFps: Boolean
|
||||
private val screenSizeFoldProvider: ScreenSizeFoldProvider = ScreenSizeFoldProvider(context)
|
||||
var iconLayoutParamSize: Pair<Int, Int> = Pair(1, 1)
|
||||
set(value) {
|
||||
if (field == value) {
|
||||
@@ -74,6 +79,8 @@ open class AuthBiometricFingerprintIconController(
|
||||
if (isSideFps && displayInfo.rotation == Surface.ROTATION_180) {
|
||||
iconView.rotation = 180f
|
||||
}
|
||||
screenSizeFoldProvider.registerCallback(this, context.mainExecutor)
|
||||
screenSizeFoldProvider.onConfigurationChange(context.resources.configuration)
|
||||
}
|
||||
|
||||
private fun updateIconSideFps(@BiometricState lastState: Int, @BiometricState newState: Int) {
|
||||
@@ -124,6 +131,10 @@ open class AuthBiometricFingerprintIconController(
|
||||
LottieColorUtils.applyDynamicColors(context, iconView)
|
||||
}
|
||||
|
||||
override fun onConfigurationChanged(newConfig: Configuration) {
|
||||
screenSizeFoldProvider.onConfigurationChange(newConfig)
|
||||
}
|
||||
|
||||
override fun updateIcon(@BiometricState lastState: Int, @BiometricState newState: Int) {
|
||||
if (isSideFps) {
|
||||
updateIconSideFps(lastState, newState)
|
||||
@@ -191,11 +202,21 @@ open class AuthBiometricFingerprintIconController(
|
||||
|
||||
@RawRes
|
||||
private fun getSideFpsAnimationForTransition(rotation: Int): Int = when (rotation) {
|
||||
Surface.ROTATION_0 -> R.raw.biometricprompt_landscape_base
|
||||
Surface.ROTATION_90 -> R.raw.biometricprompt_portrait_base_topleft
|
||||
Surface.ROTATION_180 -> R.raw.biometricprompt_landscape_base
|
||||
Surface.ROTATION_270 -> R.raw.biometricprompt_portrait_base_bottomright
|
||||
else -> R.raw.biometricprompt_landscape_base
|
||||
Surface.ROTATION_90 -> if (isDeviceFolded) {
|
||||
R.raw.biometricprompt_folded_base_topleft
|
||||
} else {
|
||||
R.raw.biometricprompt_portrait_base_topleft
|
||||
}
|
||||
Surface.ROTATION_270 -> if (isDeviceFolded) {
|
||||
R.raw.biometricprompt_folded_base_bottomright
|
||||
} else {
|
||||
R.raw.biometricprompt_portrait_base_bottomright
|
||||
}
|
||||
else -> if (isDeviceFolded) {
|
||||
R.raw.biometricprompt_folded_base_default
|
||||
} else {
|
||||
R.raw.biometricprompt_landscape_base
|
||||
}
|
||||
}
|
||||
|
||||
@RawRes
|
||||
@@ -273,4 +294,8 @@ open class AuthBiometricFingerprintIconController(
|
||||
}
|
||||
else -> null
|
||||
}
|
||||
|
||||
override fun onFoldUpdated(isFolded: Boolean) {
|
||||
isDeviceFolded = isFolded
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ package com.android.systemui.biometrics
|
||||
|
||||
import android.annotation.DrawableRes
|
||||
import android.content.Context
|
||||
import android.content.res.Configuration
|
||||
import android.graphics.drawable.Animatable2
|
||||
import android.graphics.drawable.AnimatedVectorDrawable
|
||||
import android.graphics.drawable.Drawable
|
||||
@@ -91,4 +92,6 @@ abstract class AuthIconController(
|
||||
|
||||
/** Called during [onAnimationEnd] if the controller is not [deactivated]. */
|
||||
open fun handleAnimationEnd(drawable: Drawable) {}
|
||||
|
||||
open fun onConfigurationChanged(newConfig: Configuration) {}
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.annotation.StringRes;
|
||||
import android.content.Context;
|
||||
import android.content.res.Configuration;
|
||||
import android.hardware.biometrics.BiometricAuthenticator.Modality;
|
||||
import android.hardware.biometrics.BiometricPrompt;
|
||||
import android.hardware.biometrics.PromptInfo;
|
||||
@@ -653,6 +654,12 @@ public abstract class AuthBiometricView extends LinearLayout {
|
||||
Utils.notifyAccessibilityContentChanged(mAccessibilityManager, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onConfigurationChanged(Configuration newConfig) {
|
||||
super.onConfigurationChanged(newConfig);
|
||||
mIconController.onConfigurationChanged(newConfig);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onFinishInflate() {
|
||||
super.onFinishInflate();
|
||||
|
||||
Reference in New Issue
Block a user