[Feature] Properly set corner sizes for Material 2 and Material 3.

This helps the most with the grid view file items.
This commit is contained in:
Hai Zhang 2023-08-09 02:31:48 -07:00
parent b8f897af05
commit 4360134d93
8 changed files with 73 additions and 22 deletions

View File

@ -21,6 +21,8 @@ import java8.nio.file.Path
import me.zhanghai.android.fastscroll.PopupTextProvider
import me.zhanghai.android.files.R
import me.zhanghai.android.files.coil.AppIconPackageName
import me.zhanghai.android.files.compat.foregroundCompat
import me.zhanghai.android.files.compat.getDrawableCompat
import me.zhanghai.android.files.compat.isSingleLineCompat
import me.zhanghai.android.files.databinding.FileItemGridBinding
import me.zhanghai.android.files.databinding.FileItemListBinding
@ -34,6 +36,7 @@ import me.zhanghai.android.files.settings.Settings
import me.zhanghai.android.files.ui.AnimatedListAdapter
import me.zhanghai.android.files.ui.CheckableForegroundLinearLayout
import me.zhanghai.android.files.ui.CheckableItemBackground
import me.zhanghai.android.files.util.isMaterial3Theme
import me.zhanghai.android.files.util.layoutInflater
import me.zhanghai.android.files.util.valueCompat
import java.util.Locale
@ -172,9 +175,26 @@ class FileListAdapter(
FileViewType.GRID -> ViewHolder(FileItemGridBinding.inflate(inflater, parent, false))
}
return holder.apply {
itemLayout.background = when (viewType) {
FileViewType.LIST -> CheckableItemBackground.create(0f, 0f, itemLayout.context)
FileViewType.GRID -> CheckableItemBackground.create(4f, 12f, itemLayout.context)
itemLayout.apply {
val context = context
val isMaterial3Theme = context.isMaterial3Theme
if (viewType == FileViewType.GRID && isMaterial3Theme) {
foregroundCompat =
context.getDrawableCompat(R.drawable.file_item_grid_foreground_material3)
}
background = if (viewType == FileViewType.GRID && isMaterial3Theme) {
CheckableItemBackground.create(4f, 12f, context)
} else {
CheckableItemBackground.create(0f, 0f, context)
}
}
thumbnailOutlineView?.apply {
val context = context
if (context.isMaterial3Theme) {
background = context.getDrawableCompat(
R.drawable.file_item_grid_thumbnail_outline_material3
)
}
}
popupMenu = PopupMenu(menuButton.context, menuButton)
.apply { inflate(R.menu.file_item) }

View File

@ -6,7 +6,7 @@
-->
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="8dp" />
<corners android:radius="4dp" />
<stroke
android:color="@color/material_on_surface_stroke"
android:width="1dp" />

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (c) 2023 Hai Zhang <dreaming.in.code.zh@gmail.com>
~ All Rights Reserved.
-->
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="8dp" />
<stroke
android:color="@color/material_on_surface_stroke"
android:width="1dp" />
</shape>

View File

@ -11,7 +11,7 @@
android:id="@+id/itemLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:foreground="@drawable/file_item_grid_foreground"
android:foreground="?selectableItemBackground"
android:gravity="center_vertical"
android:orientation="vertical">
@ -50,7 +50,7 @@
android:layout_height="match_parent"
android:duplicateParentState="true"
android:scaleType="centerCrop"
app:shapeAppearance="?shapeAppearanceMediumComponent" />
app:shapeAppearance="?shapeAppearanceSmallComponent" />
<View
android:id="@+id/thumbnailOutlineView"

View File

@ -20,6 +20,18 @@
<item name="android:widgetLayout">@layout/switch_preference_compat_widget_material3</item>
</style>
<style name="ShapeAppearance.MaterialFiles.Material3.SmallComponent" parent="ShapeAppearance.Material3.SmallComponent">
<item name="cornerSize">8dp</item>
</style>
<style name="ShapeAppearance.MaterialFiles.Material3.MediumComponent" parent="ShapeAppearance.Material3.MediumComponent">
<item name="cornerSize">12dp</item>
</style>
<style name="ShapeAppearance.MaterialFiles.Material3.LargeComponent" parent="ShapeAppearance.Material3.LargeComponent">
<item name="cornerSize">16dp</item>
</style>
<style name="TextAppearance.MaterialFiles.Material3.ListItem" parent="TextAppearance.Material3.TitleMedium">
<item name="fontFamily">@string/m3_ref_typeface_plain_regular</item>
<item name="android:fontFamily">@string/m3_ref_typeface_plain_regular</item>

View File

@ -31,8 +31,8 @@
<item name="materialCardViewStyle">@style/Widget.MaterialFiles.CardView</item>
<item name="navigationViewStyle">@style/Widget.MaterialFiles.NavigationView</item>
<item name="switchPreferenceCompatStyle">@style/Preference.MaterialFiles.SwitchPreferenceCompat</item>
<item name="minTouchTargetSize">0dp</item>
<item name="textInputStyle">?textInputOutlinedStyle</item>
<item name="minTouchTargetSize">0dp</item>
<item name="colorAppBarSurface">?colorSurface</item>
</style>
@ -81,8 +81,8 @@
<item name="materialCardViewStyle">@style/Widget.MaterialFiles.CardView</item>
<item name="navigationViewStyle">@style/Widget.MaterialFiles.NavigationView</item>
<item name="switchPreferenceCompatStyle">@style/Preference.MaterialFiles.SwitchPreferenceCompat</item>
<item name="minTouchTargetSize">0dp</item>
<item name="textInputStyle">?textInputOutlinedStyle</item>
<item name="minTouchTargetSize">0dp</item>
<item name="colorAppBarSurface">@color/dark_50_percent</item>
</style>

View File

@ -21,19 +21,22 @@
<item name="windowNoTitle">true</item>
<item name="colorAccent">?colorPrimary</item>
<item name="floatingActionButtonStyle">?floatingActionButtonSecondaryStyle</item>
<item name="materialCardViewStyle">@style/Widget.MaterialFiles.CardView</item>
<item name="minTouchTargetSize">0dp</item>
<item name="navigationViewStyle">@style/Widget.MaterialFiles.Material3.NavigationView</item>
<item name="simpleMenuPreferenceStyle">@style/Preference.MaterialFiles.Material3.SimpleMenuPreference</item>
<item name="switchPreferenceCompatStyle">@style/Preference.MaterialFiles.Material3.SwitchPreferenceCompat</item>
<item name="tabStyle">@style/Widget.MaterialFiles.Material3.TabLayout</item>
<item name="shapeAppearanceSmallComponent">@style/ShapeAppearance.MaterialFiles.Material3.SmallComponent</item>
<item name="shapeAppearanceMediumComponent">@style/ShapeAppearance.MaterialFiles.Material3.MediumComponent</item>
<item name="shapeAppearanceLargeComponent">@style/ShapeAppearance.MaterialFiles.Material3.LargeComponent</item>
<item name="textAppearanceListItem">@style/TextAppearance.MaterialFiles.Material3.ListItem</item>
<item name="android:textAppearanceListItem">?textAppearanceListItem</item>
<item name="textAppearanceListItemSmall">@style/TextAppearance.MaterialFiles.Material3.ListItemSmall</item>
<item name="android:textAppearanceListItemSmall">?textAppearanceListItemSmall</item>
<item name="floatingActionButtonStyle">?floatingActionButtonSecondaryStyle</item>
<item name="materialCardViewStyle">@style/Widget.MaterialFiles.CardView</item>
<item name="navigationViewStyle">@style/Widget.MaterialFiles.Material3.NavigationView</item>
<item name="simpleMenuPreferenceStyle">@style/Preference.MaterialFiles.Material3.SimpleMenuPreference</item>
<item name="switchPreferenceCompatStyle">@style/Preference.MaterialFiles.Material3.SwitchPreferenceCompat</item>
<item name="tabStyle">@style/Widget.MaterialFiles.Material3.TabLayout</item>
<item name="textInputStyle">?textInputOutlinedStyle</item>
<item name="toolbarStyle">@style/Widget.MaterialFiles.Material3.Toolbar</item>
<item name="minTouchTargetSize">0dp</item>
<item name="colorAppBarSurface">?colorSurface</item>
</style>
@ -72,19 +75,22 @@
<item name="windowNoTitle">true</item>
<item name="colorAccent">?colorPrimary</item>
<item name="floatingActionButtonStyle">?floatingActionButtonSecondaryStyle</item>
<item name="materialCardViewStyle">@style/Widget.MaterialFiles.CardView</item>
<item name="minTouchTargetSize">0dp</item>
<item name="navigationViewStyle">@style/Widget.MaterialFiles.Material3.NavigationView</item>
<item name="simpleMenuPreferenceStyle">@style/Preference.MaterialFiles.Material3.SimpleMenuPreference</item>
<item name="switchPreferenceCompatStyle">@style/Preference.MaterialFiles.Material3.SwitchPreferenceCompat</item>
<item name="tabStyle">@style/Widget.MaterialFiles.Material3.TabLayout</item>
<item name="shapeAppearanceSmallComponent">@style/ShapeAppearance.MaterialFiles.Material3.SmallComponent</item>
<item name="shapeAppearanceMediumComponent">@style/ShapeAppearance.MaterialFiles.Material3.MediumComponent</item>
<item name="shapeAppearanceLargeComponent">@style/ShapeAppearance.MaterialFiles.Material3.LargeComponent</item>
<item name="textAppearanceListItem">@style/TextAppearance.MaterialFiles.Material3.ListItem</item>
<item name="android:textAppearanceListItem">?textAppearanceListItem</item>
<item name="textAppearanceListItemSmall">@style/TextAppearance.MaterialFiles.Material3.ListItemSmall</item>
<item name="android:textAppearanceListItemSmall">?textAppearanceListItemSmall</item>
<item name="floatingActionButtonStyle">?floatingActionButtonSecondaryStyle</item>
<item name="materialCardViewStyle">@style/Widget.MaterialFiles.CardView</item>
<item name="navigationViewStyle">@style/Widget.MaterialFiles.Material3.NavigationView</item>
<item name="simpleMenuPreferenceStyle">@style/Preference.MaterialFiles.Material3.SimpleMenuPreference</item>
<item name="switchPreferenceCompatStyle">@style/Preference.MaterialFiles.Material3.SwitchPreferenceCompat</item>
<item name="tabStyle">@style/Widget.MaterialFiles.Material3.TabLayout</item>
<item name="textInputStyle">?textInputOutlinedStyle</item>
<item name="toolbarStyle">@style/Widget.MaterialFiles.Material3.Toolbar</item>
<item name="minTouchTargetSize">0dp</item>
<item name="colorAppBarSurface">@color/dark_50_percent</item>
</style>