From 7a36d943c0d1590017718476a3d0128380c741c9 Mon Sep 17 00:00:00 2001 From: LooKeR Date: Sat, 16 Oct 2021 09:47:32 +0530 Subject: [PATCH] Update: Rounded Icons Update: Use ShapeableImageView --- .../looker/droidify/screen/ProductAdapter.kt | 28 +++++++++++++------ .../looker/droidify/screen/ProductsAdapter.kt | 6 ++-- .../droidify/screen/RepositoriesAdapter.kt | 4 +-- .../looker/droidify/screen/TabsFragment.kt | 3 +- .../droidify/utility/extension/Resources.kt | 11 +++++--- src/main/res/layout/edit_repository.xml | 2 +- src/main/res/layout/fragment.xml | 7 +++-- src/main/res/layout/link_item.xml | 2 +- src/main/res/layout/permissions_item.xml | 2 +- src/main/res/layout/product_header_item.xml | 2 +- src/main/res/layout/product_item.xml | 2 +- src/main/res/layout/repository_item.xml | 4 ++- src/main/res/layout/section_item.xml | 2 +- src/main/res/layout/switch_item.xml | 4 ++- src/main/res/layout/tabs_toolbar.xml | 2 +- 15 files changed, 51 insertions(+), 30 deletions(-) diff --git a/src/main/kotlin/com/looker/droidify/screen/ProductAdapter.kt b/src/main/kotlin/com/looker/droidify/screen/ProductAdapter.kt index 72e32dc2..0b4d6fca 100644 --- a/src/main/kotlin/com/looker/droidify/screen/ProductAdapter.kt +++ b/src/main/kotlin/com/looker/droidify/screen/ProductAdapter.kt @@ -23,10 +23,15 @@ import android.view.MotionEvent import android.view.View import android.view.ViewGroup import android.widget.* +import androidx.appcompat.widget.AppCompatImageView +import androidx.core.content.res.ResourcesCompat import androidx.core.graphics.ColorUtils import androidx.core.text.HtmlCompat import androidx.core.text.util.LinkifyCompat import androidx.recyclerview.widget.RecyclerView +import coil.transform.RoundedCornersTransformation +import com.google.android.material.imageview.ShapeableImageView +import com.google.android.material.switchmaterial.SwitchMaterial import com.looker.droidify.R import com.looker.droidify.content.Preferences import com.looker.droidify.content.ProductPreferences @@ -304,7 +309,7 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int) private enum class Payload { REFRESH, STATUS } private class HeaderViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val icon = itemView.findViewById(R.id.icon)!! + val icon = itemView.findViewById(R.id.icon)!! val name = itemView.findViewById(R.id.name)!! val version = itemView.findViewById(R.id.version)!! val packageName = itemView.findViewById(R.id.package_name)!! @@ -331,7 +336,7 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int) private class SwitchViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val title = itemView.findViewById(R.id.title)!! - val enabled = itemView.findViewById(R.id.enabled)!! + val enabled = itemView.findViewById(R.id.enabled)!! val statefulViews: Sequence get() = sequenceOf(itemView, title, enabled) @@ -339,7 +344,7 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int) private class SectionViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val title = itemView.findViewById(R.id.title)!! - val icon = itemView.findViewById(R.id.icon)!! + val icon = itemView.findViewById(R.id.icon)!! } private class ExpandViewHolder(context: Context) : RecyclerView.ViewHolder(TextView(context)) { @@ -352,7 +357,11 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int) itemView.setTextSizeScaled(14) itemView.setTextColor(itemView.context.getColorFromAttr(android.R.attr.textColor)) itemView.background = - itemView.resources.getDrawable(R.drawable.background_border, context.theme) + ResourcesCompat.getDrawable( + itemView.resources, + R.drawable.background_border, + context.theme + ) itemView.gravity = Gravity.CENTER itemView.isAllCaps = true itemView.layoutParams = RecyclerView.LayoutParams( @@ -400,7 +409,7 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int) private val measurement = Measurement() } - val icon = itemView.findViewById(R.id.icon)!! + val icon = itemView.findViewById(R.id.icon)!! val text = itemView.findViewById(R.id.text)!! val link = itemView.findViewById(R.id.link)!! @@ -424,7 +433,7 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int) private val measurement = Measurement() } - val icon = itemView.findViewById(R.id.icon)!! + val icon = itemView.findViewById(R.id.icon)!! val text = itemView.findViewById(R.id.text)!! init { @@ -443,7 +452,7 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int) private class ScreenshotViewHolder(context: Context) : RecyclerView.ViewHolder(FrameLayout(context)) { - val image: ImageView + val image: AppCompatImageView val placeholder: Drawable @@ -461,13 +470,12 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int) val primaryColor = itemView.context.getColorFromAttr(android.R.attr.textColor).defaultColor - image = object : ImageView(context) { + image = object : AppCompatImageView(context) { override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { super.onMeasure(widthMeasureSpec, heightMeasureSpec) setMeasuredDimension(measuredWidth, measuredWidth) } } - image.scaleType = ImageView.ScaleType.CENTER_CROP image.setBackgroundColor(ColorUtils.blendARGB(backgroundColor, accentColor, 0.1f)) itemView.addView( image, @@ -1124,6 +1132,7 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int) item.product.icon, item.product.metadataIcon, item.repository ) ) { + transformations(RoundedCornersTransformation(4.toPx)) placeholder(holder.progressIcon) error(holder.defaultIcon) } @@ -1328,6 +1337,7 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int) item.screenshot ) ) { + transformations(RoundedCornersTransformation(4.toPx)) placeholder(holder.placeholder) error(holder.placeholder) size(cellSize) diff --git a/src/main/kotlin/com/looker/droidify/screen/ProductsAdapter.kt b/src/main/kotlin/com/looker/droidify/screen/ProductsAdapter.kt index 30ad219f..5cea12b9 100644 --- a/src/main/kotlin/com/looker/droidify/screen/ProductsAdapter.kt +++ b/src/main/kotlin/com/looker/droidify/screen/ProductsAdapter.kt @@ -8,10 +8,11 @@ import android.view.View import android.view.ViewGroup import android.view.animation.AnimationUtils import android.widget.FrameLayout -import android.widget.ImageView import android.widget.ProgressBar import android.widget.TextView import androidx.recyclerview.widget.RecyclerView +import coil.transform.RoundedCornersTransformation +import com.google.android.material.imageview.ShapeableImageView import com.looker.droidify.R import com.looker.droidify.database.Database import com.looker.droidify.entity.ProductItem @@ -32,7 +33,7 @@ class ProductsAdapter(private val onClick: (ProductItem) -> Unit) : val name = itemView.findViewById(R.id.name)!! val status = itemView.findViewById(R.id.status)!! val summary = itemView.findViewById(R.id.summary)!! - val icon = itemView.findViewById(R.id.icon)!! + val icon = itemView.findViewById(R.id.icon)!! val progressIcon: Drawable val defaultIcon: Drawable @@ -151,6 +152,7 @@ class ProductsAdapter(private val onClick: (ProductItem) -> Unit) : productItem.icon, productItem.metadataIcon, repository ) ) { + transformations(RoundedCornersTransformation(4.toPx)) placeholder(holder.progressIcon) error(holder.defaultIcon) } diff --git a/src/main/kotlin/com/looker/droidify/screen/RepositoriesAdapter.kt b/src/main/kotlin/com/looker/droidify/screen/RepositoriesAdapter.kt index 911740ca..1c980072 100644 --- a/src/main/kotlin/com/looker/droidify/screen/RepositoriesAdapter.kt +++ b/src/main/kotlin/com/looker/droidify/screen/RepositoriesAdapter.kt @@ -2,9 +2,9 @@ package com.looker.droidify.screen import android.view.View import android.view.ViewGroup -import android.widget.Switch import android.widget.TextView import androidx.recyclerview.widget.RecyclerView +import com.google.android.material.switchmaterial.SwitchMaterial import com.looker.droidify.R import com.looker.droidify.database.Database import com.looker.droidify.entity.Repository @@ -20,7 +20,7 @@ class RepositoriesAdapter( private class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val name = itemView.findViewById(R.id.name)!! - val enabled = itemView.findViewById(R.id.enabled)!! + val enabled = itemView.findViewById(R.id.enabled)!! var listenSwitch = true } diff --git a/src/main/kotlin/com/looker/droidify/screen/TabsFragment.kt b/src/main/kotlin/com/looker/droidify/screen/TabsFragment.kt index 90219d5f..9aeb3061 100644 --- a/src/main/kotlin/com/looker/droidify/screen/TabsFragment.kt +++ b/src/main/kotlin/com/looker/droidify/screen/TabsFragment.kt @@ -20,6 +20,7 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import androidx.viewpager2.adapter.FragmentStateAdapter import androidx.viewpager2.widget.ViewPager2 +import com.google.android.material.imageview.ShapeableImageView import com.looker.droidify.R import com.looker.droidify.content.Preferences import com.looker.droidify.database.Database @@ -53,7 +54,7 @@ class TabsFragment : ScreenFragment() { val sectionLayout = view.findViewById(R.id.section_layout)!! val sectionChange = view.findViewById(R.id.section_change)!! val sectionName = view.findViewById(R.id.section_name)!! - val sectionIcon = view.findViewById(R.id.section_icon)!! + val sectionIcon = view.findViewById(R.id.section_icon)!! } private var searchMenuItem: MenuItem? = null diff --git a/src/main/kotlin/com/looker/droidify/utility/extension/Resources.kt b/src/main/kotlin/com/looker/droidify/utility/extension/Resources.kt index d71850ea..b39e4615 100644 --- a/src/main/kotlin/com/looker/droidify/utility/extension/Resources.kt +++ b/src/main/kotlin/com/looker/droidify/utility/extension/Resources.kt @@ -29,6 +29,13 @@ object TypefaceExtra { val light = Typeface.create("sans-serif-light", Typeface.NORMAL)!! } +val Number.toPx + get() = TypedValue.applyDimension( + TypedValue.COMPLEX_UNIT_DIP, + this.toFloat(), + Resources.getSystem().displayMetrics + ) + fun Context.getDrawableCompat(resId: Int): Drawable { val drawable = if (!Android.sdk(24)) { val fileName = TypedValue().apply { resources.getValue(resId, this, true) }.string @@ -92,10 +99,6 @@ fun ViewGroup.inflate(layoutResId: Int): View { return LayoutInflater.from(context).inflate(layoutResId, this, false) } -fun ImageView.load(uri: String, builder: ImageRequest.Builder.() -> Unit = {}) { - this.load(uri = uri, builder = builder) -} - fun ImageView.load(uri: Uri, builder: ImageRequest.Builder.() -> Unit = {}) { this.load(uri = uri, builder = builder) } diff --git a/src/main/res/layout/edit_repository.xml b/src/main/res/layout/edit_repository.xml index 0e91af87..d760d7bc 100644 --- a/src/main/res/layout/edit_repository.xml +++ b/src/main/res/layout/edit_repository.xml @@ -46,7 +46,7 @@ android:textSize="16sp" tools:ignore="Autofill,HardcodedText" /> - @@ -33,7 +34,7 @@ android:layout_height="0dp" android:layout_weight="1" android:background="?android:attr/colorBackground" - android:paddingHorizontal="10dp" - android:paddingTop="10dp" /> + android:layout_marginHorizontal="10dp" + android:layout_marginTop="10dp" /> diff --git a/src/main/res/layout/link_item.xml b/src/main/res/layout/link_item.xml index 76ce77fb..bbf23f06 100644 --- a/src/main/res/layout/link_item.xml +++ b/src/main/res/layout/link_item.xml @@ -8,7 +8,7 @@ android:paddingStart="16dp" android:paddingEnd="16dp"> - - - - @@ -16,10 +17,11 @@ android:textColor="?android:attr/textColor" android:textSize="16sp" /> - diff --git a/src/main/res/layout/section_item.xml b/src/main/res/layout/section_item.xml index f4aeab9b..012b3c0b 100644 --- a/src/main/res/layout/section_item.xml +++ b/src/main/res/layout/section_item.xml @@ -17,7 +17,7 @@ android:textColor="?android:attr/textColor" android:textSize="14sp" /> - @@ -16,10 +17,11 @@ android:textColor="?android:attr/textColor" android:textSize="16sp" /> - diff --git a/src/main/res/layout/tabs_toolbar.xml b/src/main/res/layout/tabs_toolbar.xml index 5891bda6..ddc9fd58 100644 --- a/src/main/res/layout/tabs_toolbar.xml +++ b/src/main/res/layout/tabs_toolbar.xml @@ -40,7 +40,7 @@ android:textColor="?android:attr/textColor" android:textSize="16sp" /> -