Optimize color system

fongmi
FongMi 3 days ago
parent 48503776bb
commit a6338dad3b
  1. 5
      app/src/main/java/com/fongmi/android/tv/setting/Setting.java
  2. 10
      app/src/mobile/java/com/fongmi/android/tv/ui/adapter/ThemeAdapter.java
  3. 3
      app/src/mobile/java/com/fongmi/android/tv/ui/base/BaseActivity.java
  4. 2
      app/src/mobile/java/com/fongmi/android/tv/ui/dialog/ThemeDialog.java
  5. 4
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java
  6. 10
      app/src/mobile/res/drawable/ic_action_close.xml
  7. 37
      app/src/mobile/res/drawable/shape_live.xml
  8. 8
      app/src/mobile/res/layout/activity_crash.xml
  9. 8
      app/src/mobile/res/layout/adapter_theme.xml

@ -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();
}
}

@ -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<ThemeAdapter.ViewHolder> {
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<ThemeAdapter.ViewHolder>
@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;
}

@ -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)

@ -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) {

@ -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() {

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z" />
</vector>

@ -1,15 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#80FFF176">
<item android:id="@android:id/mask">
<shape android:shape="rectangle">
<solid android:color="#f5f5f5" />
<corners android:radius="4dp" />
<padding
android:bottom="8dp"
android:left="12dp"
android:right="12dp"
android:top="8dp" />
</shape>
android:color="?attr/colorControlHighlight">
<item android:id="@android:id/background">
<selector>
<item android:state_selected="true">
<shape android:shape="rectangle">
<solid android:color="?attr/colorSecondaryContainer" />
<corners android:radius="4dp" />
<padding
android:bottom="8dp"
android:left="12dp"
android:right="12dp"
android:top="8dp" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent" />
<corners android:radius="4dp" />
<padding
android:bottom="8dp"
android:left="12dp"
android:right="12dp"
android:top="8dp" />
</shape>
</item>
</selector>
</item>
</ripple>

@ -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" />
<com.google.android.material.button.MaterialButton
android:id="@+id/details"
style="?borderlessButtonStyle"
style="@style/Widget.Material3.Button.TonalButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:backgroundTint="?attr/colorOnSurfaceVariant"
android:text="@string/crash_details"
android:textColor="?attr/colorOnSurfaceInverse" />
android:text="@string/crash_details" />
</androidx.appcompat.widget.LinearLayoutCompat>

@ -17,4 +17,12 @@
android:layout_gravity="center"
android:src="@drawable/ic_action_check" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/close"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="center"
android:src="@drawable/ic_action_close"
android:visibility="gone" />
</FrameLayout>

Loading…
Cancel
Save