diff --git a/app/src/main/java/com/fongmi/android/tv/setting/Setting.java b/app/src/main/java/com/fongmi/android/tv/setting/Setting.java index def3cd943..b66da1f5a 100644 --- a/app/src/main/java/com/fongmi/android/tv/setting/Setting.java +++ b/app/src/main/java/com/fongmi/android/tv/setting/Setting.java @@ -109,7 +109,7 @@ public class Setting { } public static int getThemeColor() { - return Prefers.getInt("theme_color", 0); + return Prefers.getInt("theme_color", -1); } public static void putThemeColor(int color) { @@ -126,6 +126,7 @@ public class Setting { public static int getDynamicColor() { int color = getThemeColor(); - return color == 0 ? getWallColor() : color; + if (color == -1) return 0; + return color != 0 ? color : getWallColor(); } } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/ThemeAdapter.java b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/ThemeAdapter.java index be88d0e52..d5645f824 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/ThemeAdapter.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/ThemeAdapter.java @@ -10,12 +10,13 @@ import androidx.recyclerview.widget.RecyclerView; import com.fongmi.android.tv.databinding.AdapterThemeBinding; import com.fongmi.android.tv.setting.Setting; +import com.github.bassaer.library.MDColor; public class ThemeAdapter extends RecyclerView.Adapter { private final OnClickListener listener; - private final int[] mItems; private final int selected; + private final int[] mItems; public ThemeAdapter(OnClickListener listener, int[] items, int selected) { this.listener = listener; @@ -42,15 +43,18 @@ public class ThemeAdapter extends RecyclerView.Adapter @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { int color = mItems[position]; + holder.binding.circle.setBackground(getCircle(color)); holder.binding.getRoot().setOnClickListener(v -> listener.onItemClick(color)); holder.binding.check.setVisibility(selected == color ? View.VISIBLE : View.INVISIBLE); - holder.binding.circle.setBackground(getCircle(color == 0 ? Setting.getWallColor() : color)); + holder.binding.close.setVisibility(selected != color && color == -1 ? View.VISIBLE : View.GONE); } private GradientDrawable getCircle(int color) { GradientDrawable circle = new GradientDrawable(); circle.setShape(GradientDrawable.OVAL); - circle.setColor(color); + if (color == 0) circle.setColor(Setting.getWallColor()); + else if (color == -1) circle.setColor(MDColor.GREY_500); + else circle.setColor(color); return circle; } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/base/BaseActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/base/BaseActivity.java index 666f4a0b8..f4b2402d2 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/base/BaseActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/base/BaseActivity.java @@ -109,7 +109,8 @@ public abstract class BaseActivity extends AppCompatActivity { } private void enableDynamicColor() { - DynamicColors.applyToActivityIfAvailable(this, new DynamicColorsOptions.Builder().setContentBasedSource(Setting.getDynamicColor()).build()); + int color = Setting.getDynamicColor(); + if (color != 0) DynamicColors.applyToActivityIfAvailable(this, new DynamicColorsOptions.Builder().setContentBasedSource(color).build()); } @Subscribe(threadMode = ThreadMode.MAIN) diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/ThemeDialog.java b/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/ThemeDialog.java index acb309f6d..7f2825fac 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/ThemeDialog.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/ThemeDialog.java @@ -11,7 +11,7 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder; public class ThemeDialog extends BaseAlertDialog implements ThemeAdapter.OnClickListener { - private static final int[] COLORS = {0, 0xFF6750A4, 0xFF3949AB, 0xFF1E88E5, 0xFF00ACC1, 0xFF00897B, 0xFF43A047, 0xFF7CB342, 0xFFFB8C00, 0xFFE53935, 0xFFD81B60, 0xFF8E24AA, 0xFF6D4C41,}; + private static final int[] COLORS = {-1, 0, 0xFF6750A4, 0xFF3949AB, 0xFF1E88E5, 0xFF00ACC1, 0xFF00897B, 0xFF43A047, 0xFF7CB342, 0xFFFB8C00, 0xFFE53935, 0xFFD81B60, 0xFF8E24AA, 0xFF6D4C41,}; private DialogThemeBinding binding; public static void show(Fragment fragment) { diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java index 1ce5e1e9a..2240fe14e 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java @@ -64,7 +64,9 @@ public class SettingFragment extends BaseFragment implements ConfigListener, Sit } private String getThemeText() { - return getString(Setting.getThemeColor() == 0 ? R.string.setting_auto : R.string.setting_custom); + int color = Setting.getThemeColor(); + if (color == -1) return getString(R.string.setting_off); + return getString(color == 0 ? R.string.setting_auto : R.string.setting_custom); } private int getDohIndex() { diff --git a/app/src/mobile/res/drawable/ic_action_close.xml b/app/src/mobile/res/drawable/ic_action_close.xml new file mode 100644 index 000000000..5ddf18632 --- /dev/null +++ b/app/src/mobile/res/drawable/ic_action_close.xml @@ -0,0 +1,10 @@ + + + + diff --git a/app/src/mobile/res/drawable/shape_live.xml b/app/src/mobile/res/drawable/shape_live.xml index a63c59674..9b64a4495 100644 --- a/app/src/mobile/res/drawable/shape_live.xml +++ b/app/src/mobile/res/drawable/shape_live.xml @@ -1,15 +1,30 @@ - - - - - - + android:color="?attr/colorControlHighlight"> + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/mobile/res/layout/activity_crash.xml b/app/src/mobile/res/layout/activity_crash.xml index 854884e01..f46db1497 100644 --- a/app/src/mobile/res/layout/activity_crash.xml +++ b/app/src/mobile/res/layout/activity_crash.xml @@ -29,16 +29,14 @@ android:layout_marginTop="16dp" android:backgroundTint="?attr/colorPrimary" android:text="@string/crash_restart" - android:textColor="?attr/colorOnSurfaceInverse" /> + android:textColor="?attr/colorOnPrimary" /> + android:text="@string/crash_details" /> diff --git a/app/src/mobile/res/layout/adapter_theme.xml b/app/src/mobile/res/layout/adapter_theme.xml index f9d40590b..2993c7085 100644 --- a/app/src/mobile/res/layout/adapter_theme.xml +++ b/app/src/mobile/res/layout/adapter_theme.xml @@ -17,4 +17,12 @@ android:layout_gravity="center" android:src="@drawable/ic_action_check" /> + +