1 package com.android.systemui.statusbar.notification.fsi 2 3 import android.content.Context 4 import android.graphics.Color 5 import android.graphics.Color.DKGRAY 6 import android.graphics.Outline 7 import android.util.AttributeSet 8 import android.view.View 9 import android.view.ViewOutlineProvider 10 import android.widget.Button 11 import android.widget.ImageView 12 import android.widget.LinearLayout 13 import android.widget.TextView 14 import com.android.systemui.R 15 import com.android.systemui.dagger.SysUISingleton 16 import com.android.systemui.statusbar.notification.fsi.FsiDebug.Companion.log 17 18 @SysUISingleton 19 class FsiChromeView 20 @JvmOverloads 21 constructor( 22 context: Context?, 23 attrs: AttributeSet? = null, 24 defStyleAttr: Int = 0, 25 defStyleRes: Int = 0 26 ) : LinearLayout(context, attrs, defStyleAttr, defStyleRes) { 27 28 companion object { 29 private const val classTag = "FsiChromeView" 30 } 31 32 lateinit var chromeContainer: LinearLayout 33 lateinit var appIconImageView: ImageView 34 lateinit var appNameTextView: TextView 35 lateinit var dismissButton: Button 36 lateinit var fullscreenButton: Button 37 38 private val cornerRadius: Float = 39 resources.getDimensionPixelSize(R.dimen.notification_corner_radius).toFloat() 40 private val vertPadding: Int = 41 resources.getDimensionPixelSize(R.dimen.fsi_chrome_vertical_padding) 42 private val sidePadding: Int = 43 resources.getDimensionPixelSize(R.dimen.notification_side_paddings) 44 45 init { 46 log("$classTag init") 47 } 48 onFinishInflatenull49 override fun onFinishInflate() { 50 log("$classTag onFinishInflate") 51 super.onFinishInflate() 52 53 setBackgroundColor(Color.TRANSPARENT) 54 setPadding( 55 sidePadding, 56 vertPadding, 57 sidePadding, 58 vertPadding 59 ) // Make smaller than fullscreen. 60 61 chromeContainer = findViewById(R.id.fsi_chrome) 62 chromeContainer.setBackgroundColor(DKGRAY) 63 64 appIconImageView = findViewById(R.id.fsi_app_icon) 65 appNameTextView = findViewById(R.id.fsi_app_name) 66 dismissButton = findViewById(R.id.fsi_dismiss_button) 67 fullscreenButton = findViewById(R.id.fsi_fullscreen_button) 68 69 outlineProvider = 70 object : ViewOutlineProvider() { 71 override fun getOutline(view: View, outline: Outline) { 72 outline.setRoundRect( 73 /* left */ sidePadding, 74 /* top */ vertPadding, 75 /* right */ view.width - sidePadding, 76 /* bottom */ view.height - vertPadding, 77 cornerRadius 78 ) 79 } 80 } 81 clipToOutline = true 82 } 83 } 84