mirror of
https://github.com/mastodon/mastodon-android.git
synced 2025-02-07 23:48:42 +01:00
Support for Android 15's color contrast setting WIP
This commit is contained in:
parent
14209dc785
commit
3026bd5c51
@ -243,7 +243,7 @@ public class SplashFragment extends AppKitFragment{
|
||||
|
||||
@Override
|
||||
public boolean wantsLightNavigationBar(){
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -2,10 +2,16 @@ package org.joinmastodon.android.fragments.settings;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import android.util.Pair;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ScrollView;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import org.joinmastodon.android.GlobalUserPreferences;
|
||||
import org.joinmastodon.android.R;
|
||||
import org.joinmastodon.android.api.PushSubscriptionManager;
|
||||
import org.joinmastodon.android.api.session.AccountActivationInfo;
|
||||
import org.joinmastodon.android.api.session.AccountSession;
|
||||
@ -14,12 +20,22 @@ import org.joinmastodon.android.fragments.HomeFragment;
|
||||
import org.joinmastodon.android.fragments.onboarding.AccountActivationFragment;
|
||||
import org.joinmastodon.android.model.viewmodel.CheckableListItem;
|
||||
import org.joinmastodon.android.model.viewmodel.ListItem;
|
||||
import org.joinmastodon.android.ui.M3AlertDialogBuilder;
|
||||
import org.joinmastodon.android.ui.SimpleViewHolder;
|
||||
import org.joinmastodon.android.ui.utils.DiscoverInfoBannerHelper;
|
||||
import org.joinmastodon.android.ui.utils.UiUtils;
|
||||
import org.joinmastodon.android.updater.GithubSelfUpdater;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.palette.graphics.Palette;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import me.grishka.appkit.Nav;
|
||||
import me.grishka.appkit.utils.V;
|
||||
|
||||
public class SettingsDebugFragment extends BaseSettingsFragment<Void>{
|
||||
private CheckableListItem<Void> donationsStagingItem;
|
||||
@ -38,7 +54,8 @@ public class SettingsDebugFragment extends BaseSettingsFragment<Void>{
|
||||
new ListItem<>("Reset pre-reply sheets", null, this::onResetPreReplySheetsClick),
|
||||
new ListItem<>("Clear dismissed donation campaigns", null, this::onClearDismissedCampaignsClick),
|
||||
donationsStagingItem=new CheckableListItem<>("Use staging environment for donations", "Restart app to apply", CheckableListItem.Style.SWITCH, getPrefs().getBoolean("donationsStaging", false), this::toggleCheckableItem),
|
||||
new ListItem<>("Delete cached instance info", null, this::onDeleteInstanceInfoClick)
|
||||
new ListItem<>("Delete cached instance info", null, this::onDeleteInstanceInfoClick),
|
||||
new ListItem<>("View dynamic color values", null, this::onViewColorsClick)
|
||||
));
|
||||
if(!GithubSelfUpdater.needSelfUpdating()){
|
||||
resetUpdateItem.isEnabled=selfUpdateItem.isEnabled=false;
|
||||
@ -101,6 +118,58 @@ public class SettingsDebugFragment extends BaseSettingsFragment<Void>{
|
||||
Toast.makeText(getActivity(), "Instances removed from database", Toast.LENGTH_LONG).show();
|
||||
}
|
||||
|
||||
private void onViewColorsClick(ListItem<?> item){
|
||||
ArrayList<Pair<Integer, String>> attrs=new ArrayList<>();
|
||||
Field[] fields=R.attr.class.getFields();
|
||||
try{
|
||||
for(Field fld:fields){
|
||||
if(fld.getName().startsWith("color") && fld.getType().equals(int.class)){
|
||||
attrs.add(new Pair<>((Integer)fld.get(null), fld.getName()));
|
||||
}
|
||||
}
|
||||
}catch(IllegalAccessException x){
|
||||
Toast.makeText(getActivity(), x.toString(), Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
|
||||
class ColorsAdapter extends RecyclerView.Adapter<SimpleViewHolder>{
|
||||
@NonNull
|
||||
@Override
|
||||
public SimpleViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType){
|
||||
TextView view=new TextView(getActivity());
|
||||
int pad=V.dp(16);
|
||||
view.setPadding(pad, pad, pad, pad);
|
||||
view.setTextSize(14);
|
||||
view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
|
||||
return new SimpleViewHolder(view);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull SimpleViewHolder holder, int position){
|
||||
Pair<Integer, String> attr=attrs.get(position);
|
||||
TextView view=(TextView) holder.itemView;
|
||||
int color=UiUtils.getThemeColor(getActivity(), attr.first);
|
||||
view.setBackgroundColor(color);
|
||||
view.setText(String.format("%s\n#%06X", attr.second, (color & 0xFF000000) != 0xFF000000 ? color : (color & 0xFFFFFF)));
|
||||
view.setTextColor(new Palette.Swatch(color | 0xFF000000, 1).getBodyTextColor());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount(){
|
||||
return attrs.size();
|
||||
}
|
||||
}
|
||||
|
||||
RecyclerView rv=new RecyclerView(getActivity());
|
||||
rv.setLayoutManager(new LinearLayoutManager(getActivity()));
|
||||
rv.setAdapter(new ColorsAdapter());
|
||||
new M3AlertDialogBuilder(getActivity())
|
||||
.setTitle("Dynamic colors")
|
||||
.setView(rv)
|
||||
.setPositiveButton(R.string.ok, null)
|
||||
.show();
|
||||
}
|
||||
|
||||
private void restartUI(){
|
||||
Bundle args=new Bundle();
|
||||
args.putString("account", accountID);
|
||||
|
@ -0,0 +1,15 @@
|
||||
package org.joinmastodon.android.ui;
|
||||
|
||||
public enum ColorContrastMode{
|
||||
DEFAULT,
|
||||
MEDIUM,
|
||||
HIGH;
|
||||
|
||||
public static ColorContrastMode fromContrastValue(float value){
|
||||
if(value>0.75f)
|
||||
return HIGH;
|
||||
if(value>0.25f)
|
||||
return MEDIUM;
|
||||
return DEFAULT;
|
||||
}
|
||||
}
|
@ -5,6 +5,7 @@ import android.text.TextPaint;
|
||||
import android.text.style.TypefaceSpan;
|
||||
|
||||
import org.joinmastodon.android.R;
|
||||
import org.joinmastodon.android.ui.ColorContrastMode;
|
||||
import org.joinmastodon.android.ui.utils.UiUtils;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
@ -21,7 +22,11 @@ public abstract class BaseMonospaceSpan extends TypefaceSpan{
|
||||
@Override
|
||||
public void updateDrawState(@NonNull TextPaint paint){
|
||||
super.updateDrawState(paint);
|
||||
paint.setColor(UiUtils.getThemeColor(context, R.attr.colorRichTextText));
|
||||
if(!UiUtils.isDarkTheme() && UiUtils.getColorContrastMode(context)==ColorContrastMode.HIGH){
|
||||
|
||||
}else{
|
||||
paint.setColor(UiUtils.getThemeColor(context, R.attr.colorRichTextText));
|
||||
}
|
||||
paint.setTextSize(paint.getTextSize()*0.9375f);
|
||||
paint.baselineShift=V.dp(-1);
|
||||
}
|
||||
|
@ -41,16 +41,7 @@ public class BlockQuoteSpan extends CharacterStyle implements LeadingMarginSpan{
|
||||
@Override
|
||||
public void drawLeadingMargin(@NonNull Canvas c, @NonNull Paint p, int x, int dir, int top, int baseline, int bottom, @NonNull CharSequence text, int start, int end, boolean first, @NonNull Layout layout){
|
||||
if(text instanceof Spanned s && s.getSpanStart(this)==start){
|
||||
int color;
|
||||
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.S && UiUtils.isDarkTheme()){
|
||||
color=UiUtils.alphaBlendColors(
|
||||
context.getColor(android.R.color.system_accent3_700),
|
||||
context.getColor(android.R.color.system_accent3_800),
|
||||
0.5f
|
||||
);
|
||||
}else{
|
||||
color=UiUtils.getThemeColor(context, R.attr.colorRichTextDecorations);
|
||||
}
|
||||
int color=UiUtils.getThemeColor(context, R.attr.colorRichTextDecorations);
|
||||
int level=s.getSpans(start, end, LeadingMarginSpan.class).length-1;
|
||||
if(dir<0){ // RTL
|
||||
if(level==0){
|
||||
|
@ -2,6 +2,7 @@ package org.joinmastodon.android.ui.utils;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.app.UiModeManager;
|
||||
import android.content.ActivityNotFoundException;
|
||||
import android.content.ClipData;
|
||||
import android.content.ComponentName;
|
||||
@ -75,6 +76,7 @@ import org.joinmastodon.android.model.Hashtag;
|
||||
import org.joinmastodon.android.model.Relationship;
|
||||
import org.joinmastodon.android.model.SearchResults;
|
||||
import org.joinmastodon.android.model.Status;
|
||||
import org.joinmastodon.android.ui.ColorContrastMode;
|
||||
import org.joinmastodon.android.ui.M3AlertDialogBuilder;
|
||||
import org.joinmastodon.android.ui.Snackbar;
|
||||
import org.joinmastodon.android.ui.sheets.BlockAccountConfirmationSheet;
|
||||
@ -721,9 +723,21 @@ public class UiUtils{
|
||||
|
||||
public static void setUserPreferredTheme(Context context){
|
||||
context.setTheme(switch(GlobalUserPreferences.theme){
|
||||
case AUTO -> R.style.Theme_Mastodon_AutoLightDark;
|
||||
case LIGHT -> R.style.Theme_Mastodon_Light;
|
||||
case DARK -> R.style.Theme_Mastodon_Dark;
|
||||
case AUTO -> switch(getColorContrastMode(context)){
|
||||
case DEFAULT -> R.style.Theme_Mastodon_AutoLightDark;
|
||||
case MEDIUM -> R.style.Theme_Mastodon_AutoLightDark_MediumContrast;
|
||||
case HIGH -> R.style.Theme_Mastodon_AutoLightDark_HighContrast;
|
||||
};
|
||||
case LIGHT -> switch(getColorContrastMode(context)){
|
||||
case DEFAULT -> R.style.Theme_Mastodon_Light;
|
||||
case MEDIUM -> R.style.Theme_Mastodon_Light_MediumContrast;
|
||||
case HIGH -> R.style.Theme_Mastodon_Light_HighContrast;
|
||||
};
|
||||
case DARK -> switch(getColorContrastMode(context)){
|
||||
case DEFAULT -> R.style.Theme_Mastodon_Dark;
|
||||
case MEDIUM -> R.style.Theme_Mastodon_Dark_MediumContrast;
|
||||
case HIGH -> R.style.Theme_Mastodon_Dark_HighContrast;
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
@ -1086,4 +1100,10 @@ public class UiUtils{
|
||||
rv.scrollBy(0, -topItemOffset);
|
||||
}
|
||||
}
|
||||
|
||||
public static ColorContrastMode getColorContrastMode(Context context){
|
||||
if(Build.VERSION.SDK_INT<Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
|
||||
return ColorContrastMode.DEFAULT;
|
||||
return ColorContrastMode.fromContrastValue(context.getSystemService(UiModeManager.class).getContrast());
|
||||
}
|
||||
}
|
||||
|
@ -95,11 +95,7 @@ public class LinkCardHolder<T extends LinkCardHolder.LinkCardProvider> extends S
|
||||
String[] authorParts=itemView.getContext().getString(R.string.article_by_author, "{author}").split("\\{author\\}");
|
||||
String before=authorParts.length>0 ? authorParts[0].trim() : "";
|
||||
String after=authorParts.length>1 ? authorParts[1].trim() : "";
|
||||
if(!TextUtils.isEmpty(before)){
|
||||
authorBefore.setText(before);
|
||||
}else{
|
||||
authorBefore.setText("");
|
||||
}
|
||||
authorBefore.setText(before);
|
||||
if(TextUtils.isEmpty(after)){
|
||||
authorAfter.setVisibility(View.GONE);
|
||||
}else{
|
||||
|
@ -24,6 +24,10 @@ public class CheckIconSelectableTextView extends TextView{
|
||||
super(context, attrs, defStyle);
|
||||
}
|
||||
|
||||
protected int getCheckmarkColorAttribute(){
|
||||
return R.attr.colorM3OnSurface;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawableStateChanged(){
|
||||
super.drawableStateChanged();
|
||||
@ -32,7 +36,7 @@ public class CheckIconSelectableTextView extends TextView{
|
||||
currentlySelected=isSelected();
|
||||
Drawable start=currentlySelected ? getResources().getDrawable(R.drawable.ic_baseline_check_18, getContext().getTheme()).mutate() : null;
|
||||
if(start!=null)
|
||||
start.setTint(UiUtils.getThemeColor(getContext(), R.attr.colorM3OnSurface));
|
||||
start.setTint(UiUtils.getThemeColor(getContext(), getCheckmarkColorAttribute()));
|
||||
Drawable end=getCompoundDrawablesRelative()[2];
|
||||
setCompoundDrawablesRelativeWithIntrinsicBounds(start, null, end, null);
|
||||
}
|
||||
|
@ -35,6 +35,10 @@ public class FilterChipView extends CheckIconSelectableTextView{
|
||||
updatePadding();
|
||||
}
|
||||
|
||||
protected int getCheckmarkColorAttribute(){
|
||||
return R.attr.colorM3OnSecondaryContainer;
|
||||
}
|
||||
|
||||
private void updatePadding(){
|
||||
int vertical=V.dp(6);
|
||||
Drawable[] drawables=getCompoundDrawablesRelative();
|
||||
|
4
mastodon/src/main/res/color-v31/m3_sys_accent3_750.xml
Normal file
4
mastodon/src/main/res/color-v31/m3_sys_accent3_750.xml
Normal file
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:color="@android:color/system_accent3_700" android:lStar="25"/>
|
||||
</selector>
|
4
mastodon/src/main/res/color-v31/m3_sys_accent3_850.xml
Normal file
4
mastodon/src/main/res/color-v31/m3_sys_accent3_850.xml
Normal file
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:color="@android:color/system_accent3_800" android:lStar="15"/>
|
||||
</selector>
|
@ -1,4 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<style name="Theme.Mastodon.AutoLightDark" parent="Theme.Mastodon.Dark"/>
|
||||
<style name="Theme.Mastodon.AutoLightDark.MediumContrast" parent="Theme.Mastodon.Dark.MediumContrast"/>
|
||||
<style name="Theme.Mastodon.AutoLightDark.HighContrast" parent="Theme.Mastodon.Dark.HighContrast"/>
|
||||
</resources>
|
@ -51,5 +51,5 @@
|
||||
<color name="ext_rich_text_decoration_light">@android:color/system_accent3_200</color>
|
||||
<color name="ext_rich_text_text_dark">@android:color/system_accent3_200</color>
|
||||
<color name="ext_rich_text_container_dark">@android:color/system_accent3_800</color>
|
||||
<color name="ext_rich_text_decoration_dark">#0f0</color> <!-- it's "tertiary 35" but oh well -->
|
||||
<color name="ext_rich_text_decoration_dark">@color/m3_sys_accent3_750</color>
|
||||
</resources>
|
||||
|
@ -1,4 +1,63 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<item name="overlay_ripple_alpha" format="float" type="dimen">0.12</item>
|
||||
|
||||
<!-- light theme -->
|
||||
<color name="m3_sys_light_primary">@android:color/system_primary_light</color>
|
||||
<color name="m3_sys_light_on_primary">@android:color/system_on_primary_light</color>
|
||||
<color name="m3_sys_light_primary_container">@android:color/system_primary_container_light</color>
|
||||
<color name="m3_sys_light_on_primary_container">@android:color/system_on_primary_container_light</color>
|
||||
<color name="m3_sys_light_secondary">@android:color/system_secondary_light</color>
|
||||
<color name="m3_sys_light_on_secondary">@android:color/system_on_secondary_light</color>
|
||||
<color name="m3_sys_light_secondary_container">@android:color/system_secondary_container_light</color>
|
||||
<color name="m3_sys_light_on_secondary_container">@android:color/system_on_secondary_container_light</color>
|
||||
<color name="m3_sys_light_tertiary">@android:color/system_tertiary_light</color>
|
||||
<color name="m3_sys_light_on_tertiary">@android:color/system_on_tertiary_light</color>
|
||||
<color name="m3_sys_light_tertiary_container">@android:color/system_tertiary_container_light</color>
|
||||
<color name="m3_sys_light_on_tertiary_container">@android:color/system_on_tertiary_container_light</color>
|
||||
<color name="m3_sys_light_background">@android:color/system_background_light</color>
|
||||
<color name="m3_sys_light_on_background">@android:color/system_on_background_light</color>
|
||||
<color name="m3_sys_light_surface">@android:color/system_surface_light</color>
|
||||
<color name="m3_sys_light_on_surface">@android:color/system_on_surface_light</color>
|
||||
<color name="m3_sys_light_surface_variant">@android:color/system_surface_variant_light</color>
|
||||
<color name="m3_sys_light_on_surface_variant">@android:color/system_on_surface_variant_light</color>
|
||||
<color name="m3_sys_light_outline">@android:color/system_outline_light</color>
|
||||
<color name="m3_sys_light_outline_variant">@android:color/system_outline_variant_light</color>
|
||||
<color name="m3_sys_light_error">@android:color/system_error_light</color>
|
||||
<color name="m3_sys_light_on_error">@android:color/system_on_error_light</color>
|
||||
<color name="m3_sys_light_error_container">@android:color/system_error_container_light</color>
|
||||
<color name="m3_sys_light_on_error_container">@android:color/system_on_error_container_light</color>
|
||||
|
||||
<color name="ext_rich_text_text_light_medium_contrast">@android:color/system_accent3_800</color>
|
||||
<color name="ext_rich_text_container_light_medium_contrast">@android:color/system_accent3_100</color>
|
||||
<color name="ext_rich_text_decoration_light_medium_contrast">@android:color/system_accent3_300</color>
|
||||
<color name="ext_rich_text_text_light_high_contrast">@color/m3_sys_accent3_850</color>
|
||||
<color name="ext_rich_text_container_light_high_contrast">@android:color/system_accent3_200</color>
|
||||
<color name="ext_rich_text_decoration_light_high_contrast">@android:color/system_accent3_500</color>
|
||||
|
||||
<!-- dark theme -->
|
||||
<color name="m3_sys_dark_primary">@android:color/system_primary_dark</color>
|
||||
<color name="m3_sys_dark_on_primary">@android:color/system_on_primary_dark</color>
|
||||
<color name="m3_sys_dark_primary_container">@android:color/system_primary_container_dark</color>
|
||||
<color name="m3_sys_dark_on_primary_container">@android:color/system_on_primary_container_dark</color>
|
||||
<color name="m3_sys_dark_secondary">@android:color/system_secondary_dark</color>
|
||||
<color name="m3_sys_dark_on_secondary">@android:color/system_on_secondary_dark</color>
|
||||
<color name="m3_sys_dark_secondary_container">@android:color/system_secondary_container_dark</color>
|
||||
<color name="m3_sys_dark_on_secondary_container">@android:color/system_on_secondary_container_dark</color>
|
||||
<color name="m3_sys_dark_tertiary">@android:color/system_tertiary_dark</color>
|
||||
<color name="m3_sys_dark_on_tertiary">@android:color/system_on_tertiary_dark</color>
|
||||
<color name="m3_sys_dark_tertiary_container">@android:color/system_tertiary_container_dark</color>
|
||||
<color name="m3_sys_dark_on_tertiary_container">@android:color/system_on_tertiary_container_dark</color>
|
||||
<color name="m3_sys_dark_background">@android:color/system_background_dark</color>
|
||||
<color name="m3_sys_dark_on_background">@android:color/system_on_background_dark</color>
|
||||
<color name="m3_sys_dark_surface">@android:color/system_surface_dark</color>
|
||||
<color name="m3_sys_dark_on_surface">@android:color/system_on_surface_dark</color>
|
||||
<color name="m3_sys_dark_surface_variant">@android:color/system_surface_variant_dark</color>
|
||||
<color name="m3_sys_dark_on_surface_variant">@android:color/system_on_surface_variant_dark</color>
|
||||
<color name="m3_sys_dark_outline">@android:color/system_outline_dark</color>
|
||||
<color name="m3_sys_dark_outline_variant">@android:color/system_outline_variant_dark</color>
|
||||
<color name="m3_sys_dark_error">@android:color/system_error_dark</color>
|
||||
<color name="m3_sys_dark_on_error">@android:color/system_on_error_dark</color>
|
||||
<color name="m3_sys_dark_error_container">@android:color/system_error_container_dark</color>
|
||||
<color name="m3_sys_dark_on_error_container">@android:color/system_on_error_container_dark</color>
|
||||
</resources>
|
@ -32,7 +32,17 @@
|
||||
<attr name="colorSensitiveOverlay" format="color"/>
|
||||
<attr name="colorWhite" format="color"/>
|
||||
<attr name="colorFavorite" format="color" />
|
||||
<attr name="colorOnFavorite" format="color"/>
|
||||
<attr name="colorFavoriteContainer" format="color" />
|
||||
<attr name="colorOnFavoriteContainer" format="color"/>
|
||||
<attr name="colorBoost" format="color" />
|
||||
<attr name="colorOnBoost" format="color"/>
|
||||
<attr name="colorBoostContainer" format="color" />
|
||||
<attr name="colorOnBoostContainer" format="color"/>
|
||||
<attr name="colorBookmark" format="color" />
|
||||
<attr name="colorOnBookmark" format="color"/>
|
||||
<attr name="colorBookmarkContainer" format="color" />
|
||||
<attr name="colorOnBookmarkContainer" format="color"/>
|
||||
<attr name="colorRichTextText" format="color"/>
|
||||
<attr name="colorRichTextContainer" format="color"/>
|
||||
<attr name="colorRichTextDecorations" format="color"/>
|
||||
|
@ -31,6 +31,10 @@
|
||||
<color name="m3_sys_light_on_surface_variant">#49454F</color>
|
||||
<color name="m3_sys_light_outline">#79747E</color>
|
||||
<color name="m3_sys_light_outline_variant">#CAC4D0</color>
|
||||
<color name="m3_sys_light_error">#B3261E</color>
|
||||
<color name="m3_sys_light_on_error">#FFF</color>
|
||||
<color name="m3_sys_light_error_container">#F9DEDC</color>
|
||||
<color name="m3_sys_light_on_error_container">#410E0B</color>
|
||||
|
||||
<!-- dark theme -->
|
||||
<color name="m3_sys_dark_primary">#D0BCFF</color>
|
||||
@ -53,6 +57,10 @@
|
||||
<color name="m3_sys_dark_on_surface_variant">#CAC4D0</color>
|
||||
<color name="m3_sys_dark_outline">#938F99</color>
|
||||
<color name="m3_sys_dark_outline_variant">#49454F</color>
|
||||
<color name="m3_sys_dark_error">#F2B8B5</color>
|
||||
<color name="m3_sys_dark_on_error">#601410</color>
|
||||
<color name="m3_sys_dark_error_container">#8C1D18</color>
|
||||
<color name="m3_sys_dark_on_error_container">#F9DEDC</color>
|
||||
|
||||
<!-- extended colors -->
|
||||
<color name="ext_favorite_light">#E89A00</color>
|
||||
@ -107,6 +115,12 @@
|
||||
<color name="ext_rich_text_text_light">#6C3646</color>
|
||||
<color name="ext_rich_text_container_light">#FFD9E1</color>
|
||||
<color name="ext_rich_text_decoration_light">#FDB2C5</color>
|
||||
<color name="ext_rich_text_text_light_medium_contrast">#6C3646</color>
|
||||
<color name="ext_rich_text_container_light_medium_contrast">#FFD9E1</color>
|
||||
<color name="ext_rich_text_decoration_light_medium_contrast">#FDB2C5</color>
|
||||
<color name="ext_rich_text_text_light_high_contrast">#6C3646</color>
|
||||
<color name="ext_rich_text_container_light_high_contrast">#FFD9E1</color>
|
||||
<color name="ext_rich_text_decoration_light_high_contrast">#FDB2C5</color>
|
||||
<color name="ext_rich_text_text_dark">#FDB2C5</color>
|
||||
<color name="ext_rich_text_container_dark">#512030</color>
|
||||
<color name="ext_rich_text_decoration_dark">#7A4152</color>
|
||||
|
@ -48,16 +48,28 @@
|
||||
<item name="colorM3OutlineVariant">@color/m3_sys_light_outline_variant</item>
|
||||
<item name="colorM3DisabledBackground">#1F1F1F1F</item>
|
||||
<item name="colorM3PressedOverlay">@color/m3_sys_light_on_primary</item>
|
||||
<item name="colorM3Error">#B3261E</item>
|
||||
<item name="colorM3OnError">#FFF</item>
|
||||
<item name="colorM3ErrorContainer">#F9DEDC</item>
|
||||
<item name="colorM3OnErrorContainer">#410E0B</item>
|
||||
<item name="colorM3Error">@color/m3_sys_light_error</item>
|
||||
<item name="colorM3OnError">@color/m3_sys_light_on_error</item>
|
||||
<item name="colorM3ErrorContainer">@color/m3_sys_light_error_container</item>
|
||||
<item name="colorM3OnErrorContainer">@color/m3_sys_light_on_error_container</item>
|
||||
<item name="colorM3PrimaryInverse">@color/m3_sys_dark_primary</item>
|
||||
<item name="colorM3SurfaceInverse">@color/m3_sys_dark_surface</item>
|
||||
<item name="colorM3OnSurfaceInverse">@color/m3_sys_dark_on_surface</item>
|
||||
<item name="colorWhite">#FFF</item>
|
||||
|
||||
<!-- custom M3 color attrs -->
|
||||
<item name="colorFavorite">@color/ext_favorite_light</item>
|
||||
<item name="colorOnFavorite">@color/ext_on_favorite_light</item>
|
||||
<item name="colorFavoriteContainer">@color/ext_favorite_container_light</item>
|
||||
<item name="colorOnFavoriteContainer">@color/ext_on_favorite_container_light</item>
|
||||
<item name="colorBoost">@color/ext_boost_light</item>
|
||||
<item name="colorOnBoost">@color/ext_on_boost_light</item>
|
||||
<item name="colorBoostContainer">@color/ext_boost_container_light</item>
|
||||
<item name="colorOnBoostContainer">@color/ext_on_boost_container_light</item>
|
||||
<item name="colorBookmark">@color/ext_bookmark_light</item>
|
||||
<item name="colorOnBookmark">@color/ext_on_bookmark_light</item>
|
||||
<item name="colorBookmarkContainer">@color/ext_bookmark_container_light</item>
|
||||
<item name="colorOnBookmarkContainer">@color/ext_on_bookmark_container_light</item>
|
||||
<item name="colorRichTextText">@color/ext_rich_text_text_light</item>
|
||||
<item name="colorRichTextContainer">@color/ext_rich_text_container_light</item>
|
||||
<item name="colorRichTextDecorations">@color/ext_rich_text_decoration_light</item>
|
||||
@ -119,16 +131,28 @@
|
||||
<item name="colorM3OutlineVariant">@color/m3_sys_dark_outline_variant</item>
|
||||
<item name="colorM3DisabledBackground">#1FE3E3E3</item>
|
||||
<item name="colorM3PressedOverlay">@color/m3_sys_dark_primary</item>
|
||||
<item name="colorM3Error">#F2B8B5</item>
|
||||
<item name="colorM3OnError">#601410</item>
|
||||
<item name="colorM3ErrorContainer">#8C1D18</item>
|
||||
<item name="colorM3OnErrorContainer">#F9DEDC</item>
|
||||
<item name="colorM3Error">@color/m3_sys_dark_error</item>
|
||||
<item name="colorM3OnError">@color/m3_sys_dark_on_error</item>
|
||||
<item name="colorM3ErrorContainer">@color/m3_sys_dark_error_container</item>
|
||||
<item name="colorM3OnErrorContainer">@color/m3_sys_dark_on_error_container</item>
|
||||
<item name="colorM3PrimaryInverse">@color/m3_sys_light_primary</item>
|
||||
<item name="colorM3SurfaceInverse">@color/m3_sys_light_surface</item>
|
||||
<item name="colorM3OnSurfaceInverse">@color/m3_sys_light_on_surface</item>
|
||||
<item name="colorWhite">#000</item>
|
||||
|
||||
<!-- custom M3 color attrs -->
|
||||
<item name="colorFavorite">@color/ext_favorite_dark</item>
|
||||
<item name="colorOnFavorite">@color/ext_on_favorite_dark</item>
|
||||
<item name="colorFavoriteContainer">@color/ext_favorite_container_dark</item>
|
||||
<item name="colorOnFavoriteContainer">@color/ext_on_favorite_container_dark</item>
|
||||
<item name="colorBoost">@color/ext_boost_dark</item>
|
||||
<item name="colorOnBoost">@color/ext_on_boost_dark</item>
|
||||
<item name="colorBoostContainer">@color/ext_boost_container_dark</item>
|
||||
<item name="colorOnBoostContainer">@color/ext_on_boost_container_dark</item>
|
||||
<item name="colorBookmark">@color/ext_bookmark_dark</item>
|
||||
<item name="colorOnBookmark">@color/ext_on_bookmark_dark</item>
|
||||
<item name="colorBookmarkContainer">@color/ext_bookmark_container_dark</item>
|
||||
<item name="colorOnBookmarkContainer">@color/ext_on_bookmark_container_dark</item>
|
||||
<item name="colorRichTextText">@color/ext_rich_text_text_dark</item>
|
||||
<item name="colorRichTextContainer">@color/ext_rich_text_container_dark</item>
|
||||
<item name="colorRichTextDecorations">@color/ext_rich_text_decoration_dark</item>
|
||||
@ -143,6 +167,48 @@
|
||||
<item name="android:textAppearanceLargePopupMenu">@style/popup_menu_item_text</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Mastodon.Light.MediumContrast">
|
||||
<item name="colorFavorite">@color/ext_favorite_light_medium_contrast</item>
|
||||
<item name="colorOnFavorite">@color/ext_on_favorite_light_medium_contrast</item>
|
||||
<item name="colorFavoriteContainer">@color/ext_favorite_container_light_medium_contrast</item>
|
||||
<item name="colorOnFavoriteContainer">@color/ext_on_favorite_container_light_medium_contrast</item>
|
||||
<item name="colorBoost">@color/ext_boost_light_medium_contrast</item>
|
||||
<item name="colorOnBoost">@color/ext_on_boost_light_medium_contrast</item>
|
||||
<item name="colorBoostContainer">@color/ext_boost_container_light_medium_contrast</item>
|
||||
<item name="colorOnBoostContainer">@color/ext_on_boost_container_light_medium_contrast</item>
|
||||
<item name="colorBookmark">@color/ext_bookmark_light_medium_contrast</item>
|
||||
<item name="colorOnBookmark">@color/ext_on_bookmark_light_medium_contrast</item>
|
||||
<item name="colorBookmarkContainer">@color/ext_bookmark_container_light_medium_contrast</item>
|
||||
<item name="colorOnBookmarkContainer">@color/ext_on_bookmark_container_light_medium_contrast</item>
|
||||
<item name="colorRichTextText">@color/ext_rich_text_text_light_medium_contrast</item>
|
||||
<item name="colorRichTextContainer">@color/ext_rich_text_container_light_medium_contrast</item>
|
||||
<item name="colorRichTextDecorations">@color/ext_rich_text_decoration_light_medium_contrast</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Mastodon.Light.HighContrast">
|
||||
<item name="colorFavorite">@color/ext_favorite_light_high_contrast</item>
|
||||
<item name="colorOnFavorite">@color/ext_on_favorite_light_high_contrast</item>
|
||||
<item name="colorFavoriteContainer">@color/ext_favorite_container_light_high_contrast</item>
|
||||
<item name="colorOnFavoriteContainer">@color/ext_on_favorite_container_light_high_contrast</item>
|
||||
<item name="colorBoost">@color/ext_boost_light_high_contrast</item>
|
||||
<item name="colorOnBoost">@color/ext_on_boost_light_high_contrast</item>
|
||||
<item name="colorBoostContainer">@color/ext_boost_container_light_high_contrast</item>
|
||||
<item name="colorOnBoostContainer">@color/ext_on_boost_container_light_high_contrast</item>
|
||||
<item name="colorBookmark">@color/ext_bookmark_light_high_contrast</item>
|
||||
<item name="colorOnBookmark">@color/ext_on_bookmark_light_high_contrast</item>
|
||||
<item name="colorBookmarkContainer">@color/ext_bookmark_container_light_high_contrast</item>
|
||||
<item name="colorOnBookmarkContainer">@color/ext_on_bookmark_container_light_high_contrast</item>
|
||||
<item name="colorRichTextText">@color/ext_rich_text_text_light_high_contrast</item>
|
||||
<item name="colorRichTextContainer">@color/ext_rich_text_container_light_high_contrast</item>
|
||||
<item name="colorRichTextDecorations">@color/ext_rich_text_decoration_light_high_contrast</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Mastodon.Dark.MediumContrast">
|
||||
</style>
|
||||
|
||||
<style name="Theme.Mastodon.Dark.HighContrast">
|
||||
</style>
|
||||
|
||||
<style name="Theme.Mastodon.Dark.SplashFragment">
|
||||
<item name="colorM3Primary">#563ACC</item>
|
||||
<item name="colorM3OnPrimary">#FFF</item>
|
||||
@ -151,6 +217,8 @@
|
||||
</style>
|
||||
|
||||
<style name="Theme.Mastodon.AutoLightDark" parent="Theme.Mastodon.Light"/>
|
||||
<style name="Theme.Mastodon.AutoLightDark.MediumContrast" parent="Theme.Mastodon.Light.MediumContrast"/>
|
||||
<style name="Theme.Mastodon.AutoLightDark.HighContrast" parent="Theme.Mastodon.Light.HighContrast"/>
|
||||
|
||||
<style name="Theme.Mastodon.Toolbar" parent="android:ThemeOverlay.Material.ActionBar">
|
||||
<item name="android:colorPrimary">?colorM3Background</item>
|
||||
|
Loading…
x
Reference in New Issue
Block a user