Utilize withStyledAttributes KTX extension

This commit is contained in:
TacoTheDank 2022-04-07 17:34:41 -04:00
parent 1a71242fc6
commit 04afa6a271
5 changed files with 49 additions and 56 deletions

View file

@ -20,6 +20,7 @@ import android.graphics.Color
import android.util.AttributeSet
import androidx.appcompat.widget.AppCompatImageView
import androidx.core.content.ContextCompat
import androidx.core.content.withStyledAttributes
import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.util.ATHUtil
import code.name.monkey.appthemehelper.util.ColorUtil
@ -38,12 +39,10 @@ class ColorIconsImageView @JvmOverloads constructor(
init {
// Load the styled attributes and set their properties
val attributes =
context.obtainStyledAttributes(attrs, R.styleable.ColorIconsImageView, 0, 0)
val color =
attributes.getColor(R.styleable.ColorIconsImageView_iconBackgroundColor, Color.RED)
setIconBackgroundColor(color)
attributes.recycle()
context.withStyledAttributes(attrs, R.styleable.ColorIconsImageView, 0, 0) {
val color = getColor(R.styleable.ColorIconsImageView_iconBackgroundColor, Color.RED)
setIconBackgroundColor(color)
}
}
fun setIconBackgroundColor(color: Int) {

View file

@ -18,6 +18,7 @@ import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import android.widget.FrameLayout
import androidx.core.content.withStyledAttributes
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.databinding.ListItemViewNoCardBinding
import code.name.monkey.retromusic.extensions.hide
@ -49,20 +50,20 @@ class ListItemView : FrameLayout {
private fun init(context: Context, attrs: AttributeSet?) {
binding = ListItemViewNoCardBinding.inflate(LayoutInflater.from(context), this, true)
val typedArray = context.obtainStyledAttributes(attrs, R.styleable.ListItemView)
if (typedArray.hasValue(R.styleable.ListItemView_listItemIcon)) {
binding.icon.setImageDrawable(typedArray.getDrawable(R.styleable.ListItemView_listItemIcon))
} else {
binding.icon.hide()
}
context.withStyledAttributes(attrs, R.styleable.ListItemView) {
if (hasValue(R.styleable.ListItemView_listItemIcon)) {
binding.icon.setImageDrawable(getDrawable(R.styleable.ListItemView_listItemIcon))
} else {
binding.icon.hide()
}
binding.title.text = typedArray.getText(R.styleable.ListItemView_listItemTitle)
if (typedArray.hasValue(R.styleable.ListItemView_listItemSummary)) {
binding.summary.text = typedArray.getText(R.styleable.ListItemView_listItemSummary)
} else {
binding.summary.hide()
binding.title.text = getText(R.styleable.ListItemView_listItemTitle)
if (hasValue(R.styleable.ListItemView_listItemSummary)) {
binding.summary.text = getText(R.styleable.ListItemView_listItemSummary)
} else {
binding.summary.hide()
}
}
typedArray.recycle()
}
fun setSummary(appVersion: String) {

View file

@ -5,6 +5,7 @@ import android.content.res.ColorStateList
import android.util.AttributeSet
import android.view.LayoutInflater
import android.widget.FrameLayout
import androidx.core.content.withStyledAttributes
import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.util.ColorUtil
import code.name.monkey.retromusic.R
@ -21,26 +22,25 @@ class PermissionItem @JvmOverloads constructor(
val checkImage get() = binding.checkImage
init {
val attributes = context.obtainStyledAttributes(attrs, R.styleable.PermissionItem, 0, 0)
binding = ItemPermissionBinding.inflate(LayoutInflater.from(context), this, true)
binding.title.text = attributes.getText(R.styleable.PermissionItem_permissionTitle)
binding.summary.text =
attributes.getText(R.styleable.PermissionItem_permissionTitleSubTitle)
binding.number.text = attributes.getText(R.styleable.PermissionItem_permissionTitleNumber)
binding.button.text = attributes.getText(R.styleable.PermissionItem_permissionButtonTitle)
binding.button.setIconResource(
attributes.getResourceId(
R.styleable.PermissionItem_permissionIcon,
R.drawable.ic_album
context.withStyledAttributes(attrs, R.styleable.PermissionItem, 0, 0) {
binding.title.text = getText(R.styleable.PermissionItem_permissionTitle)
binding.summary.text = getText(R.styleable.PermissionItem_permissionTitleSubTitle)
binding.number.text = getText(R.styleable.PermissionItem_permissionTitleNumber)
binding.button.text = getText(R.styleable.PermissionItem_permissionButtonTitle)
binding.button.setIconResource(
getResourceId(
R.styleable.PermissionItem_permissionIcon,
R.drawable.ic_album
)
)
)
val color = ThemeStore.accentColor(context)
binding.number.backgroundTintList =
ColorStateList.valueOf(ColorUtil.withAlpha(color, 0.22f))
val color = ThemeStore.accentColor(context)
binding.number.backgroundTintList =
ColorStateList.valueOf(ColorUtil.withAlpha(color, 0.22f))
binding.button.accentOutlineColor()
attributes.recycle()
binding.button.accentOutlineColor()
}
}
fun setButtonClick(callBack: () -> Unit) {

View file

@ -18,6 +18,7 @@ import android.graphics.Color
import android.util.AttributeSet
import android.view.LayoutInflater
import android.widget.FrameLayout
import androidx.core.content.withStyledAttributes
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.databinding.ListSettingItemViewBinding
@ -33,21 +34,15 @@ class SettingListItemView @JvmOverloads constructor(
init {
val binding: ListSettingItemViewBinding =
ListSettingItemViewBinding.inflate(LayoutInflater.from(context), this, true)
val typedArray =
context.obtainStyledAttributes(attrs, R.styleable.SettingListItemView)
binding.icon
if (typedArray.hasValue(R.styleable.SettingListItemView_settingListItemIcon)) {
binding.icon.setImageDrawable(typedArray.getDrawable(R.styleable.SettingListItemView_settingListItemIcon))
}
binding.icon.setIconBackgroundColor(
typedArray.getColor(
R.styleable.SettingListItemView_settingListItemIconColor,
Color.WHITE
context.withStyledAttributes(attrs, R.styleable.SettingListItemView) {
if (hasValue(R.styleable.SettingListItemView_settingListItemIcon)) {
binding.icon.setImageDrawable(getDrawable(R.styleable.SettingListItemView_settingListItemIcon))
}
binding.icon.setIconBackgroundColor(
getColor(R.styleable.SettingListItemView_settingListItemIconColor, Color.WHITE)
)
)
binding.title.text =
typedArray.getText(R.styleable.SettingListItemView_settingListItemTitle)
binding.text.text = typedArray.getText(R.styleable.SettingListItemView_settingListItemText)
typedArray.recycle()
binding.title.text = getText(R.styleable.SettingListItemView_settingListItemTitle)
binding.text.text = getText(R.styleable.SettingListItemView_settingListItemText)
}
}
}