Update: Almost Full Rewrite of theme

This commit is contained in:
LooKeR 2021-10-16 18:57:01 +05:30
parent ac79953c7c
commit 524b804336
21 changed files with 86 additions and 94 deletions

View File

@ -1,6 +1,5 @@
package com.looker.droidify.screen
import android.app.AlertDialog
import android.content.ClipboardManager
import android.content.Context
import android.graphics.PorterDuff
@ -18,8 +17,10 @@ import android.view.ViewGroup
import android.widget.EditText
import android.widget.FrameLayout
import android.widget.TextView
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.widget.Toolbar
import androidx.fragment.app.DialogFragment
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.looker.droidify.R
import com.looker.droidify.database.Database
import com.looker.droidify.entity.Repository
@ -474,7 +475,7 @@ class EditRepositoryFragment() : ScreenFragment() {
.observeOn(AndroidSchedulers.mainThread())
.subscribe { result, throwable ->
checkDisposable = null
throwable?.printStackTrace()
throwable.printStackTrace()
val resultAddress =
result?.let { if (it.isEmpty()) null else it } ?: address
val allow = resultAddress == address || run {
@ -544,7 +545,7 @@ class EditRepositoryFragment() : ScreenFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): AlertDialog {
val mirrors = requireArguments().getStringArrayList(EXTRA_MIRRORS)!!
return AlertDialog.Builder(requireContext())
return MaterialAlertDialogBuilder(requireContext())
.setTitle(R.string.select_mirror)
.setItems(mirrors.toTypedArray()) { _, position ->
(parentFragment as EditRepositoryFragment)

View File

@ -1,13 +1,14 @@
package com.looker.droidify.screen
import android.app.AlertDialog
import android.content.ActivityNotFoundException
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.os.Parcel
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.FragmentManager
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.looker.droidify.R
import com.looker.droidify.entity.Release
import com.looker.droidify.utility.KParcelable
@ -139,7 +140,7 @@ class MessageDialog() : DialogFragment() {
}
override fun onCreateDialog(savedInstanceState: Bundle?): AlertDialog {
val dialog = AlertDialog.Builder(requireContext())
val dialog = MaterialAlertDialogBuilder(requireContext())
when (val message = requireArguments().getParcelable<Message>(EXTRA_MESSAGE)!!) {
is Message.DeleteRepositoryConfirm -> {
dialog.setTitle(R.string.confirmation)

View File

@ -1,6 +1,5 @@
package com.looker.droidify.screen
import android.app.AlertDialog
import android.content.ActivityNotFoundException
import android.content.ComponentName
import android.content.Intent
@ -13,11 +12,13 @@ import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import android.widget.FrameLayout
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.widget.Toolbar
import androidx.fragment.app.DialogFragment
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.looker.droidify.R
import com.looker.droidify.content.ProductPreferences
import com.looker.droidify.database.Database
@ -554,7 +555,7 @@ class ProductFragment() : ScreenFragment(), ProductAdapter.Callbacks {
override fun onCreateDialog(savedInstanceState: Bundle?): AlertDialog {
val names = requireArguments().getStringArrayList(EXTRA_NAMES)!!
val labels = requireArguments().getStringArrayList(EXTRA_LABELS)!!
return AlertDialog.Builder(requireContext())
return MaterialAlertDialogBuilder(requireContext())
.setTitle(R.string.launch)
.setItems(labels.toTypedArray()) { _, position ->
(parentFragment as ProductFragment)

View File

@ -1,6 +1,5 @@
package com.looker.droidify.screen
import android.app.AlertDialog
import android.app.Dialog
import android.content.Context
import android.content.Intent
@ -12,10 +11,12 @@ import android.view.View
import android.view.ViewGroup
import android.view.WindowManager
import android.widget.*
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.widget.Toolbar
import androidx.core.net.toUri
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.Fragment
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.switchmaterial.SwitchMaterial
import com.looker.droidify.BuildConfig
import com.looker.droidify.R
@ -24,7 +25,6 @@ import com.looker.droidify.utility.extension.resources.*
import com.topjohnwu.superuser.Shell
import io.reactivex.rxjava3.disposables.Disposable
class SettingsFragment : ScreenFragment() {
private val preferences = mutableMapOf<Preferences.Key<*>, Preference<*>>()
private var disposable: Disposable? = null
@ -253,7 +253,7 @@ class SettingsFragment : ScreenFragment() {
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
)
AlertDialog.Builder(it)
MaterialAlertDialogBuilder(it)
.setTitle(title)
.setView(scroll)
.setPositiveButton(R.string.ok) { _, _ ->
@ -295,7 +295,7 @@ class SettingsFragment : ScreenFragment() {
) {
addPreference(key, title, { valueToString(Preferences[key]) }) {
val values = key.default.value.values
AlertDialog.Builder(it)
MaterialAlertDialogBuilder(it)
.setTitle(title)
.setSingleChoiceItems(
values.map(valueToString).toTypedArray(),

View File

@ -202,9 +202,9 @@ class TabsFragment : ScreenFragment() {
ProductsFragment.Source.values().forEach {
val tab = TextView(layout.tabs.context)
val selectedColor =
tab.context.getColorFromAttr(android.R.attr.textColorPrimary).defaultColor
tab.context.getColorFromAttr(R.attr.colorOnSurface).defaultColor
val normalColor =
tab.context.getColorFromAttr(android.R.attr.textColorSecondary).defaultColor
tab.context.getColorFromAttr(R.attr.colorOnBackground).defaultColor
tab.gravity = Gravity.CENTER
tab.typeface = TypefaceExtra.medium
tab.setTextColor(
@ -300,6 +300,7 @@ class TabsFragment : ScreenFragment() {
this.adapter = adapter
addItemDecoration(DividerItemDecoration(context, adapter::configureDivider))
setBackgroundResource(R.drawable.background_border)
setBackgroundColor(context.getColorFromAttr(R.attr.colorSurface).defaultColor)
elevation = resources.sizeScaled(4).toFloat()
content.addView(this, FrameLayout.LayoutParams.MATCH_PARENT, 0)
visibility = View.GONE

View File

@ -52,7 +52,9 @@ object Utils {
fun getToolbarIcon(context: Context, resId: Int): Drawable {
val drawable = context.getDrawableCompat(resId).mutate()
drawable.setTintList(context.getColorFromAttr(android.R.attr.titleTextColor))
if (Android.sdk(23)) {
drawable.setTintList(context.getColorFromAttr(R.attr.colorOnPrimarySurface))
}
return drawable
}

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:alpha="0.3" android:color="@color/accent_default_dark" android:state_enabled="false" />
<item android:alpha="0.3" android:color="@color/green200" android:state_enabled="false" />
<item android:color="@color/accent_default_dark" />
<item android:color="@color/green200" />
</selector>

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:alpha="0.26" android:color="@color/accent_default_light" android:state_enabled="false" />
<item android:alpha="0.26" android:color="@color/green200" android:state_enabled="false" />
<item android:color="@color/accent_default_light" />
<item android:color="@color/green200" />
</selector>

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:alpha="0.3" android:color="@color/error_default_dark" android:state_enabled="false" />
<item android:alpha="0.3" android:color="@color/red200" android:state_enabled="false" />
<item android:color="@color/error_default_dark" />
<item android:color="@color/red200" />
</selector>

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:alpha="0.26" android:color="@color/error_default_light" android:state_enabled="false" />
<item android:alpha="0.26" android:color="@color/red300" android:state_enabled="false" />
<item android:color="@color/error_default_light" />
<item android:color="@color/red300" />
</selector>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:alpha="0.7" android:color="?android:attr/colorPrimary" android:state_checked="false" />
<item android:color="?android:attr/colorPrimary" android:state_checked="true" />
<item android:alpha="0.7" android:color="?attr/colorPrimary" android:state_checked="false" />
<item android:color="?attr/colorPrimary" android:state_checked="true" />
</selector>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:alpha="0.3" android:color="?android:attr/colorPrimary" android:state_checked="false" />
<item android:alpha="1" android:color="?android:attr/colorPrimary" android:state_checked="true" />
<item android:alpha="0.3" android:color="?attr/colorPrimary" android:state_checked="false" />
<item android:alpha="1" android:color="?attr/colorPrimary" android:state_checked="true" />
</selector>

View File

@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="?attr/colorOnBackground" />
<corners android:radius="10dp" />
</shape>

View File

@ -3,12 +3,12 @@
<solid
android:angle="0"
android:color="?android:attr/colorPrimary" />
android:color="?attr/colorPrimary" />
<size
android:width="6dp"
android:height="50dp" />
<corners android:radius="6dp" />
<corners android:radius="3dp" />
</shape>

View File

@ -3,8 +3,10 @@
<solid
android:angle="0"
android:color="@null" />
android:color="?attr/colorSurface" />
<corners android:radius="6dp" />
<size android:width="6dp" />
<corners android:radius="3dp" />
</shape>

View File

@ -10,21 +10,21 @@
android:layout_height="wrap_content"
android:background="?android:attr/colorBackground"
android:elevation="0dp"
android:paddingHorizontal="10dp"
android:orientation="vertical">
<com.looker.droidify.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="10dp"
android:backgroundTint="?attr/colorPrimarySurface"
android:background="@drawable/background_border" />
<FrameLayout
android:id="@+id/toolbar_extra"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginHorizontal="10dp" />
android:layout_marginTop="10dp" />
</LinearLayout>
@ -34,7 +34,6 @@
android:layout_height="0dp"
android:layout_weight="1"
android:background="?android:attr/colorBackground"
android:layout_marginHorizontal="10dp"
android:layout_marginTop="10dp" />
android:layout_marginHorizontal="10dp" />
</com.looker.droidify.widget.FragmentLinearLayout>

View File

@ -54,7 +54,7 @@
android:layout_height="wrap_content"
android:paddingBottom="2sp"
android:singleLine="true"
android:textColor="?attr/subTextColor"
android:textColor="?attr/colorSurface"
android:textSize="12sp" />
</LinearLayout>
@ -86,7 +86,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginBottom="2dp"
android:indeterminateTint="?android:attr/colorPrimary" />
android:indeterminateTint="?attr/colorPrimary" />
</LinearLayout>

View File

@ -3,6 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:backgroundTint="?attr/colorPrimarySurface"
android:background="@drawable/background_border"
android:orientation="vertical">

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="colorError" format="color" />
<attr name="colorOnBackground" format="reference" />
<attr name="subTextColor" format="reference" />
</resources>

View File

@ -1,15 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="green50">#E8F5E9</color>
<color name="green200">#6EC898</color>
<color name="green300">#58C189</color>
<color name="green400">#3EDA86</color>
<color name="red200">#EF9A9A</color>
<color name="red300">#E57373</color>
<color name="default_green">#3EDA86</color>
<color name="default_green_dark">#36C378</color>
<color name="white">#FFFFFF</color>
<color name="black">#1E1E1E</color>
<color name="pitch_black">#000000</color>
<color name="black">#1E1E1E</color>
<color name="white">#FFFFFF</color>
<color name="grey_light">#333333</color>
<color name="grey_dark">#595959</color>
<color name="accent_default_dark">#69ECA6</color>
<color name="accent_default_light">#2C8756</color>
<color name="error_default_dark">#D36C6B</color>
<color name="error_default_light">#F48886</color>
</resources>

View File

@ -6,66 +6,62 @@
</style>
<style name="Theme.Main.Light" parent="Theme.Material3.Light.NoActionBar">
<item name="android:toolbarStyle">@style/Widget.Main.Toolbar</item>
<item name="android:windowBackground">@color/white</item>
<item name="android:colorPrimary">@color/default_green</item>
<item name="android:colorPrimaryDark">@color/white</item>
<item name="colorPrimary">@color/green400</item>
<item name="colorOnPrimary">@color/black</item>
<item name="colorSurface">@color/green50</item>
<item name="colorOnSurface">@color/black</item>
<item name="android:colorBackground">@color/white</item>
<item name="colorOnBackground">@color/default_green</item>
<item name="colorOnBackground">@color/grey_dark</item>
<item name="android:colorAccent">@color/accent_light</item>
<item name="android:colorControlActivated">@color/default_green</item>
<item name="colorError">@color/error_light</item>
<item name="android:textColor">@color/black</item>
<item name="android:titleTextColor" tools:targetApi="m">@color/black</item>
<item name="subTextColor">@color/grey_light</item>
<item name="android:popupTheme">@style/Theme.Popup.Light</item>
<item name="android:fastScrollThumbDrawable">@drawable/scrollbar_thumb</item>
<item name="android:fastScrollTrackDrawable">@drawable/scrollbar_track</item>
<item name="android:windowLightStatusBar" tools:targetApi="m">true</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="switchStyle">@style/Theme.Switch</item>
<item name="materialAlertDialogTheme">@style/Theme.Alert</item>
<item name="android:statusBarColor">@color/white</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
</style>
<style name="Theme.Main.Dark" parent="Theme.Material3.Dark.NoActionBar">
<item name="android:toolbarStyle">@style/Widget.Main.Toolbar</item>
<item name="android:windowBackground">@color/black</item>
<item name="android:colorPrimary">@color/default_green_dark</item>
<item name="android:colorPrimaryDark">@color/black</item>
<item name="colorPrimary">@color/green200</item>
<item name="colorOnPrimary">@color/black</item>
<item name="colorSurface">@color/grey_dark</item>
<item name="colorOnSurface">@color/green50</item>
<item name="toolbarStyle">@style/Widget.Main.Toolbar</item>
<item name="android:colorBackground">@color/black</item>
<item name="colorOnBackground">@color/grey_light</item>
<item name="colorOnBackground">@color/green200</item>
<item name="android:colorAccent">@color/accent_dark</item>
<item name="android:colorControlActivated">@color/default_green_dark</item>
<item name="colorError">@color/error_dark</item>
<item name="android:titleTextColor" tools:targetApi="m">@color/default_green_dark</item>
<item name="android:textColorPrimary">@color/default_green</item>
<item name="android:textColorPrimary">@color/green400</item>
<item name="android:textColor">@color/white</item>
<item name="subTextColor">@color/grey_dark</item>
<item name="android:popupTheme">@style/Theme.Popup.Dark</item>
<item name="android:fastScrollThumbDrawable">@drawable/scrollbar_thumb</item>
<item name="android:fastScrollTrackDrawable">@drawable/scrollbar_track</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="switchStyle">@style/Theme.Switch</item>
<item name="materialAlertDialogTheme">@style/Theme.Alert</item>
<item name="android:statusBarColor">@color/black</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
</style>
<style name="Theme.Main.Amoled" parent="Theme.Material3.Dark.NoActionBar">
<item name="android:toolbarStyle">@style/Widget.Main.Toolbar</item>
<item name="android:windowBackground">@color/pitch_black</item>
<item name="android:colorPrimary">@color/default_green_dark</item>
<item name="android:colorPrimaryDark">@color/pitch_black</item>
<item name="colorPrimary">@color/green200</item>
<item name="colorOnPrimary">@color/black</item>
<item name="colorSurface">@color/black</item>
<item name="colorOnSurface">@color/green50</item>
<item name="toolbarStyle">@style/Widget.Main.Toolbar</item>
<item name="android:colorBackground">@color/pitch_black</item>
<item name="colorOnBackground">@color/black</item>
<item name="colorOnBackground">@color/green50</item>
<item name="android:colorAccent">@color/accent_dark</item>
<item name="android:colorControlActivated">@color/default_green_dark</item>
<item name="colorError">@color/error_dark</item>
<item name="android:titleTextColor" tools:targetApi="m">@color/default_green_dark</item>
<item name="android:textColorPrimary">@color/default_green</item>
<item name="android:textColorPrimary">@color/green400</item>
<item name="android:textColor">@color/white</item>
<item name="subTextColor">@color/black</item>
<item name="android:popupTheme">@style/Theme.Popup.Dark</item>
<item name="android:fastScrollThumbDrawable">@drawable/scrollbar_thumb</item>
<item name="android:fastScrollTrackDrawable">@drawable/scrollbar_track</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="switchStyle">@style/Theme.Switch</item>
<item name="materialAlertDialogTheme">@style/Theme.Alert</item>
<item name="android:statusBarColor">@color/pitch_black</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
</style>
<style name="Widget.Main.Toolbar" parent="Widget.Material3.Toolbar">
@ -77,14 +73,9 @@
</item>
</style>
<style name="Theme.Popup.Light" parent="Theme.Material3.Light.Dialog.Alert">
<item name="android:colorControlActivated">@color/default_green</item>
<item name="android:colorBackground">@color/white</item>
</style>
<style name="Theme.Popup.Dark" parent="Theme.Material3.Dark.Dialog.Alert">
<item name="android:colorControlActivated">@color/default_green_dark</item>
<item name="android:colorBackground">@color/black</item>
<style name="Theme.Alert" parent="ThemeOverlay.Material3.MaterialAlertDialog.Centered">
<item name="colorPrimary">?attr/colorOnSurface</item>
<item name="android:backgroundTint">?attr/colorSurface</item>
</style>
<style name="Theme.Switch" parent="Widget.Material3.CompoundButton.Switch">