1 package com.android.systemui.biometrics.ui 2 3 import android.content.Context 4 import android.graphics.Insets 5 import android.util.AttributeSet 6 import android.view.View 7 import android.view.WindowInsets 8 import android.view.WindowInsets.Type 9 import android.widget.LinearLayout 10 import com.android.systemui.biometrics.AuthPanelController 11 import com.android.systemui.biometrics.plugins.AuthContextPlugins 12 import com.android.systemui.biometrics.ui.binder.CredentialViewBinder 13 import com.android.systemui.biometrics.ui.binder.Spaghetti 14 import com.android.systemui.biometrics.ui.viewmodel.CredentialViewModel 15 16 /** Pattern credential view for BiometricPrompt. */ 17 class CredentialPatternView(context: Context, attrs: AttributeSet?) : 18 LinearLayout(context, attrs), CredentialView, View.OnApplyWindowInsetsListener { 19 20 /** Initializes the view. */ initnull21 override fun init( 22 viewModel: CredentialViewModel, 23 host: CredentialView.Host, 24 panelViewController: AuthPanelController, 25 animatePanel: Boolean, 26 legacyCallback: Spaghetti.Callback, 27 plugins: AuthContextPlugins?, 28 ) { 29 CredentialViewBinder.bind( 30 this, 31 host, 32 viewModel, 33 panelViewController, 34 animatePanel, 35 legacyCallback, 36 plugins, 37 ) 38 } 39 onFinishInflatenull40 override fun onFinishInflate() { 41 super.onFinishInflate() 42 setOnApplyWindowInsetsListener(this) 43 } 44 onApplyWindowInsetsnull45 override fun onApplyWindowInsets(v: View, insets: WindowInsets): WindowInsets { 46 val statusBarInsets: Insets = insets.getInsets(Type.statusBars()) 47 val navigationInsets: Insets = insets.getInsets(Type.navigationBars()) 48 49 setPadding(0, statusBarInsets.top, 0, navigationInsets.bottom) 50 return WindowInsets.CONSUMED 51 } 52 } 53