Improve: More Rounded sections list

Add: Show Icon on install and cancel button
This commit is contained in:
LooKeR 2021-10-26 00:47:12 +05:30
parent 4fcbb45b3a
commit 49adc883fa
8 changed files with 51 additions and 19 deletions

View File

@ -31,6 +31,7 @@ import androidx.core.text.util.LinkifyCompat
import androidx.core.view.doOnPreDraw import androidx.core.view.doOnPreDraw
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import coil.load import coil.load
import com.google.android.material.button.MaterialButton
import com.google.android.material.card.MaterialCardView import com.google.android.material.card.MaterialCardView
import com.google.android.material.divider.MaterialDivider import com.google.android.material.divider.MaterialDivider
import com.google.android.material.imageview.ShapeableImageView import com.google.android.material.imageview.ShapeableImageView
@ -324,7 +325,7 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int)
val icon = itemView.findViewById<ShapeableImageView>(R.id.icon)!! val icon = itemView.findViewById<ShapeableImageView>(R.id.icon)!!
val name = itemView.findViewById<TextView>(R.id.name)!! val name = itemView.findViewById<TextView>(R.id.name)!!
val packageName = itemView.findViewById<TextView>(R.id.package_name)!! val packageName = itemView.findViewById<TextView>(R.id.package_name)!!
val action = itemView.findViewById<Button>(R.id.action)!! val action = itemView.findViewById<MaterialButton>(R.id.action)!!
val statusLayout = itemView.findViewById<View>(R.id.status_layout)!! val statusLayout = itemView.findViewById<View>(R.id.status_layout)!!
val status = itemView.findViewById<TextView>(R.id.status)!! val status = itemView.findViewById<TextView>(R.id.status)!!
val progress = itemView.findViewById<ProgressBar>(R.id.progress)!! val progress = itemView.findViewById<ProgressBar>(R.id.progress)!!
@ -332,8 +333,10 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int)
val progressIcon: Drawable val progressIcon: Drawable
val defaultIcon: Drawable val defaultIcon: Drawable
val actionTintNormal = action.context.getColorFromAttr(android.R.attr.colorPrimary) val actionTintNormal = action.context.getColorFromAttr(R.attr.colorSurface)
val actionTintCancel = action.context.getColorFromAttr(R.attr.colorError) val actionTintCancel = action.context.getColorFromAttr(R.attr.colorError)
val actionTintOnNormal = action.context.getColorFromAttr(R.attr.colorOnSurface)
val actionTintOnCancel = action.context.getColorFromAttr(R.attr.colorOnError)
init { init {
action.apply { action.apply {
@ -1174,13 +1177,27 @@ class ProductAdapter(private val callbacks: Callbacks, private val columns: Int)
setTextSizeScaled(15) setTextSizeScaled(15)
} }
val action = action val action = action
holder.action.visibility = if (action == null) View.GONE else View.VISIBLE holder.action.apply {
if (action != null) { visibility = if (action == null) View.GONE else View.VISIBLE
holder.action.setText(action.titleResId) if (action != null) {
} setText(action.titleResId)
if (Android.sdk(22)) { setTextColor(
holder.action.backgroundTintList = if (action == Action.CANCEL) if (action == Action.CANCEL) holder.actionTintOnCancel
holder.actionTintCancel else holder.actionTintNormal else holder.actionTintOnNormal
)
}
if (Android.sdk(22)) {
backgroundTintList = if (action == Action.CANCEL)
holder.actionTintCancel else holder.actionTintNormal
}
icon =
when (action) {
Action.CANCEL -> context.getDrawable(R.drawable.ic_cancel)
Action.LAUNCH -> context.getDrawable(R.drawable.ic_launch)
else -> context.getDrawable(R.drawable.ic_download)
}
iconTint = if (action == Action.CANCEL) holder.actionTintOnCancel
else holder.actionTintOnNormal
} }
} }
if (updateAll || updateStatus) { if (updateAll || updateStatus) {

View File

@ -56,8 +56,8 @@ class ProductFragment() : ScreenFragment(), ProductAdapter.Callbacks {
val adapterAction: ProductAdapter.Action, val adapterAction: ProductAdapter.Action,
val iconResId: Int val iconResId: Int
) { ) {
INSTALL(1, ProductAdapter.Action.INSTALL, R.drawable.ic_archive), INSTALL(1, ProductAdapter.Action.INSTALL, R.drawable.ic_download),
UPDATE(2, ProductAdapter.Action.UPDATE, R.drawable.ic_archive), UPDATE(2, ProductAdapter.Action.UPDATE, R.drawable.ic_download),
LAUNCH(3, ProductAdapter.Action.LAUNCH, R.drawable.ic_launch), LAUNCH(3, ProductAdapter.Action.LAUNCH, R.drawable.ic_launch),
DETAILS(4, ProductAdapter.Action.DETAILS, R.drawable.ic_tune), DETAILS(4, ProductAdapter.Action.DETAILS, R.drawable.ic_tune),
UNINSTALL(5, ProductAdapter.Action.UNINSTALL, R.drawable.ic_delete), UNINSTALL(5, ProductAdapter.Action.UNINSTALL, R.drawable.ic_delete),

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="@dimen/shape_medium_corner" /> <corners android:radius="@dimen/shape_large_corner" />
</shape> </shape>

View File

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M18.3,5.71c-0.39,-0.39 -1.02,-0.39 -1.41,0L12,10.59 7.11,5.7c-0.39,-0.39 -1.02,-0.39 -1.41,0 -0.39,0.39 -0.39,1.02 0,1.41L10.59,12 5.7,16.89c-0.39,0.39 -0.39,1.02 0,1.41 0.39,0.39 1.02,0.39 1.41,0L12,13.41l4.89,4.89c0.39,0.39 1.02,0.39 1.41,0 0.39,-0.39 0.39,-1.02 0,-1.41L13.41,12l4.89,-4.89c0.38,-0.38 0.38,-1.02 0,-1.4z"/>
</vector>

View File

@ -20,8 +20,8 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="?attr/collapsingToolbarLayoutLargeSize" android:layout_height="?attr/collapsingToolbarLayoutLargeSize"
app:contentScrim="@android:color/transparent" app:contentScrim="@android:color/transparent"
app:titleCollapseMode="scale" app:layout_scrollFlags="scroll|snap|exitUntilCollapsed"
app:layout_scrollFlags="scroll|snap|exitUntilCollapsed"> app:titleCollapseMode="scale">
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar" android:id="@+id/toolbar"

View File

@ -5,9 +5,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
android:paddingStart="12dp"
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingEnd="12dp"
android:paddingBottom="4dp"> android:paddingBottom="4dp">
<LinearLayout <LinearLayout
@ -15,6 +13,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingHorizontal="12dp"
android:paddingBottom="8dp"> android:paddingBottom="8dp">
<com.google.android.material.imageview.ShapeableImageView <com.google.android.material.imageview.ShapeableImageView
@ -56,8 +55,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
android:paddingStart="4dp" android:paddingHorizontal="12dp"
android:paddingEnd="4dp"
android:paddingBottom="4dp"> android:paddingBottom="4dp">
<TextView <TextView
@ -82,6 +80,8 @@
android:id="@+id/action" android:id="@+id/action"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="56dp" android:layout_height="56dp"
app:shapeAppearanceOverlay="@style/Shape.Medium" /> android:layout_marginHorizontal="12dp"
app:iconGravity="textStart"
app:shapeAppearanceOverlay="@style/PillShapeAppearance" />
</LinearLayout> </LinearLayout>

View File

@ -131,4 +131,9 @@
<item name="cornerSize">@dimen/shape_large_corner</item> <item name="cornerSize">@dimen/shape_large_corner</item>
</style> </style>
<style name="PillShapeAppearance">
<item name="cornerFamily">rounded</item>
<item name="cornerSize">50%</item>
</style>
</resources> </resources>