Merge "Added foldable assets to bp." into tm-qpr-dev

This commit is contained in:
Joshua Mccloskey
2022-11-04 19:58:47 +00:00
committed by Android (Google) Code Review
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.annotation.RawRes
import android.content.Context import android.content.Context
import android.content.res.Configuration
import android.hardware.fingerprint.FingerprintManager import android.hardware.fingerprint.FingerprintManager
import android.view.DisplayInfo import android.view.DisplayInfo
import android.view.Surface 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_HELP
import com.android.systemui.biometrics.AuthBiometricView.STATE_IDLE import com.android.systemui.biometrics.AuthBiometricView.STATE_IDLE
import com.android.systemui.biometrics.AuthBiometricView.STATE_PENDING_CONFIRMATION 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. */ /** Fingerprint only icon animator for BiometricPrompt. */
open class AuthBiometricFingerprintIconController( open class AuthBiometricFingerprintIconController(
context: Context, context: Context,
iconView: LottieAnimationView, iconView: LottieAnimationView,
protected val iconViewOverlay: LottieAnimationView protected val iconViewOverlay: LottieAnimationView
) : AuthIconController(context, iconView) { ) : AuthIconController(context, iconView), FoldProvider.FoldCallback {
private var isDeviceFolded: Boolean = false
private val isSideFps: Boolean private val isSideFps: Boolean
private val screenSizeFoldProvider: ScreenSizeFoldProvider = ScreenSizeFoldProvider(context)
var iconLayoutParamSize: Pair<Int, Int> = Pair(1, 1) var iconLayoutParamSize: Pair<Int, Int> = Pair(1, 1)
set(value) { set(value) {
if (field == value) { if (field == value) {
@@ -74,6 +79,8 @@ open class AuthBiometricFingerprintIconController(
if (isSideFps && displayInfo.rotation == Surface.ROTATION_180) { if (isSideFps && displayInfo.rotation == Surface.ROTATION_180) {
iconView.rotation = 180f iconView.rotation = 180f
} }
screenSizeFoldProvider.registerCallback(this, context.mainExecutor)
screenSizeFoldProvider.onConfigurationChange(context.resources.configuration)
} }
private fun updateIconSideFps(@BiometricState lastState: Int, @BiometricState newState: Int) { private fun updateIconSideFps(@BiometricState lastState: Int, @BiometricState newState: Int) {
@@ -124,6 +131,10 @@ open class AuthBiometricFingerprintIconController(
LottieColorUtils.applyDynamicColors(context, iconView) LottieColorUtils.applyDynamicColors(context, iconView)
} }
override fun onConfigurationChanged(newConfig: Configuration) {
screenSizeFoldProvider.onConfigurationChange(newConfig)
}
override fun updateIcon(@BiometricState lastState: Int, @BiometricState newState: Int) { override fun updateIcon(@BiometricState lastState: Int, @BiometricState newState: Int) {
if (isSideFps) { if (isSideFps) {
updateIconSideFps(lastState, newState) updateIconSideFps(lastState, newState)
@@ -191,11 +202,21 @@ open class AuthBiometricFingerprintIconController(
@RawRes @RawRes
private fun getSideFpsAnimationForTransition(rotation: Int): Int = when (rotation) { private fun getSideFpsAnimationForTransition(rotation: Int): Int = when (rotation) {
Surface.ROTATION_0 -> R.raw.biometricprompt_landscape_base Surface.ROTATION_90 -> if (isDeviceFolded) {
Surface.ROTATION_90 -> R.raw.biometricprompt_portrait_base_topleft R.raw.biometricprompt_folded_base_topleft
Surface.ROTATION_180 -> R.raw.biometricprompt_landscape_base } else {
Surface.ROTATION_270 -> R.raw.biometricprompt_portrait_base_bottomright R.raw.biometricprompt_portrait_base_topleft
else -> R.raw.biometricprompt_landscape_base }
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 @RawRes
@@ -273,4 +294,8 @@ open class AuthBiometricFingerprintIconController(
} }
else -> null 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.annotation.DrawableRes
import android.content.Context import android.content.Context
import android.content.res.Configuration
import android.graphics.drawable.Animatable2 import android.graphics.drawable.Animatable2
import android.graphics.drawable.AnimatedVectorDrawable import android.graphics.drawable.AnimatedVectorDrawable
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
@@ -91,4 +92,6 @@ abstract class AuthIconController(
/** Called during [onAnimationEnd] if the controller is not [deactivated]. */ /** Called during [onAnimationEnd] if the controller is not [deactivated]. */
open fun handleAnimationEnd(drawable: Drawable) {} 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.Nullable;
import android.annotation.StringRes; import android.annotation.StringRes;
import android.content.Context; import android.content.Context;
import android.content.res.Configuration;
import android.hardware.biometrics.BiometricAuthenticator.Modality; import android.hardware.biometrics.BiometricAuthenticator.Modality;
import android.hardware.biometrics.BiometricPrompt; import android.hardware.biometrics.BiometricPrompt;
import android.hardware.biometrics.PromptInfo; import android.hardware.biometrics.PromptInfo;
@@ -653,6 +654,12 @@ public abstract class AuthBiometricView extends LinearLayout {
Utils.notifyAccessibilityContentChanged(mAccessibilityManager, this); Utils.notifyAccessibilityContentChanged(mAccessibilityManager, this);
} }
@Override
protected void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mIconController.onConfigurationChanged(newConfig);
}
@Override @Override
protected void onFinishInflate() { protected void onFinishInflate() {
super.onFinishInflate(); super.onFinishInflate();