Added foldable assets to bp.

Test: Manually verified with biometricprompt demo app.
Fixes: 257135239
Change-Id: Iedc087e93b48a6a266f9f04660aa637df38e2d55
This commit is contained in:
Joshua McCloskey
2022-11-02 23:32:18 +00:00
parent 2546f8002b
commit 2f325403ff
6 changed files with 44 additions and 6 deletions

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

View File

@@ -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
}
}

View File

@@ -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) {}
}

View File

@@ -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();