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

View file

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

View file

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

View file

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

View file

@ -5,7 +5,7 @@ import android.text.Editable
import android.util.AttributeSet import android.util.AttributeSet
import android.widget.SeekBar import android.widget.SeekBar
import android.widget.TextView import android.widget.TextView
import androidx.core.content.ContextCompat import androidx.core.content.withStyledAttributes
import androidx.core.graphics.BlendModeColorFilterCompat import androidx.core.graphics.BlendModeColorFilterCompat
import androidx.core.graphics.BlendModeCompat import androidx.core.graphics.BlendModeCompat
import androidx.core.widget.doAfterTextChanged import androidx.core.widget.doAfterTextChanged
@ -27,13 +27,11 @@ class ATESeekBarPreference @JvmOverloads constructor(
var unit: String = "" var unit: String = ""
init { init {
val attributes = context.withStyledAttributes(attrs, R.styleable.ATESeekBarPreference, 0, 0) {
context.obtainStyledAttributes(attrs, R.styleable.ATESeekBarPreference, 0, 0) getString(R.styleable.ATESeekBarPreference_ateKey_pref_unit)?.let {
unit = it
attributes.getString(R.styleable.ATESeekBarPreference_ateKey_pref_unit)?.let { }
unit = it
} }
attributes.recycle()
icon?.colorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat( icon?.colorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(
ATHUtil.resolveColor( ATHUtil.resolveColor(
context, context,