From 04afa6a271271074e7a655ba8e776d3f3d75ff35 Mon Sep 17 00:00:00 2001 From: TacoTheDank Date: Thu, 7 Apr 2022 17:34:41 -0400 Subject: [PATCH] Utilize withStyledAttributes KTX extension --- .../retromusic/views/ColorIconsImageView.kt | 11 +++---- .../monkey/retromusic/views/ListItemView.kt | 25 ++++++++------- .../monkey/retromusic/views/PermissionItem.kt | 32 +++++++++---------- .../retromusic/views/SettingListItemView.kt | 25 ++++++--------- .../prefs/supportv7/ATESeekBarPreference.kt | 12 +++---- 5 files changed, 49 insertions(+), 56 deletions(-) diff --git a/app/src/main/java/code/name/monkey/retromusic/views/ColorIconsImageView.kt b/app/src/main/java/code/name/monkey/retromusic/views/ColorIconsImageView.kt index 358e17080..8ba3b636a 100644 --- a/app/src/main/java/code/name/monkey/retromusic/views/ColorIconsImageView.kt +++ b/app/src/main/java/code/name/monkey/retromusic/views/ColorIconsImageView.kt @@ -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) { diff --git a/app/src/main/java/code/name/monkey/retromusic/views/ListItemView.kt b/app/src/main/java/code/name/monkey/retromusic/views/ListItemView.kt index 752b88b8a..a1b199682 100644 --- a/app/src/main/java/code/name/monkey/retromusic/views/ListItemView.kt +++ b/app/src/main/java/code/name/monkey/retromusic/views/ListItemView.kt @@ -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) { diff --git a/app/src/main/java/code/name/monkey/retromusic/views/PermissionItem.kt b/app/src/main/java/code/name/monkey/retromusic/views/PermissionItem.kt index 51e9cbe25..e80bf48aa 100644 --- a/app/src/main/java/code/name/monkey/retromusic/views/PermissionItem.kt +++ b/app/src/main/java/code/name/monkey/retromusic/views/PermissionItem.kt @@ -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) { diff --git a/app/src/main/java/code/name/monkey/retromusic/views/SettingListItemView.kt b/app/src/main/java/code/name/monkey/retromusic/views/SettingListItemView.kt index e07e78450..055ca002d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/views/SettingListItemView.kt +++ b/app/src/main/java/code/name/monkey/retromusic/views/SettingListItemView.kt @@ -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) + } } } \ No newline at end of file diff --git a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/supportv7/ATESeekBarPreference.kt b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/supportv7/ATESeekBarPreference.kt index 09d1e9f70..19eb3e15a 100644 --- a/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/supportv7/ATESeekBarPreference.kt +++ b/appthemehelper/src/main/java/code/name/monkey/appthemehelper/common/prefs/supportv7/ATESeekBarPreference.kt @@ -5,7 +5,7 @@ import android.text.Editable import android.util.AttributeSet import android.widget.SeekBar import android.widget.TextView -import androidx.core.content.ContextCompat +import androidx.core.content.withStyledAttributes import androidx.core.graphics.BlendModeColorFilterCompat import androidx.core.graphics.BlendModeCompat import androidx.core.widget.doAfterTextChanged @@ -27,13 +27,11 @@ class ATESeekBarPreference @JvmOverloads constructor( var unit: String = "" init { - val attributes = - context.obtainStyledAttributes(attrs, R.styleable.ATESeekBarPreference, 0, 0) - - attributes.getString(R.styleable.ATESeekBarPreference_ateKey_pref_unit)?.let { - unit = it + context.withStyledAttributes(attrs, R.styleable.ATESeekBarPreference, 0, 0) { + getString(R.styleable.ATESeekBarPreference_ateKey_pref_unit)?.let { + unit = it + } } - attributes.recycle() icon?.colorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat( ATHUtil.resolveColor( context,