summaryrefslogtreecommitdiff
path: root/app/src/main/java
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2022-12-15 23:18:14 +0100
committerByteHamster <info@bytehamster.com>2022-12-17 10:51:07 +0100
commit1d251492b08ca17852e4a8bb5b0a9638443da9b2 (patch)
treec34e5b60ceb3c94504f7d6ef26fb7dd097a4ae63 /app/src/main/java
parent690eb6af8de3f9b8bb55adfdd9f524abe9a7b022 (diff)
downloadAntennaPod-1d251492b08ca17852e4a8bb5b0a9638443da9b2.zip
Add support for Material You tinted theme
Diffstat (limited to 'app/src/main/java')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/PodcastApp.java3
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/ChaptersListAdapter.java6
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java7
-rw-r--r--app/src/main/java/de/danoeh/antennapod/dialog/ProxyDialog.java6
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java3
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/preferences/UserInterfacePreferencesFragment.java10
-rw-r--r--app/src/main/java/de/danoeh/antennapod/preferences/MasterSwitchPreference.java7
-rw-r--r--app/src/main/java/de/danoeh/antennapod/view/ChapterSeekBar.java7
-rw-r--r--app/src/main/java/de/danoeh/antennapod/view/viewholder/EpisodeItemViewHolder.java4
-rw-r--r--app/src/main/java/de/danoeh/antennapod/view/viewholder/HorizontalItemViewHolder.java7
10 files changed, 36 insertions, 24 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/PodcastApp.java b/app/src/main/java/de/danoeh/antennapod/PodcastApp.java
index 66ce4adc6..7cbe32e11 100644
--- a/app/src/main/java/de/danoeh/antennapod/PodcastApp.java
+++ b/app/src/main/java/de/danoeh/antennapod/PodcastApp.java
@@ -5,6 +5,7 @@ import android.content.Intent;
import android.os.StrictMode;
import androidx.multidex.MultiDexApplication;
+import com.google.android.material.color.DynamicColors;
import com.joanzapata.iconify.Iconify;
import com.joanzapata.iconify.fonts.FontAwesomeModule;
import com.joanzapata.iconify.fonts.MaterialModule;
@@ -64,6 +65,8 @@ public class PodcastApp extends MultiDexApplication {
.logNoSubscriberMessages(false)
.sendNoSubscriberEvent(false)
.installDefaultEventBus();
+
+ DynamicColors.applyToActivitiesIfAvailable(this);
}
public static void forceRestart() {
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/ChaptersListAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/ChaptersListAdapter.java
index 2b11c5ff9..31e6efc5a 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/ChaptersListAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/ChaptersListAdapter.java
@@ -14,12 +14,12 @@ import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.FitCenter;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.request.RequestOptions;
+import com.google.android.material.elevation.SurfaceColors;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.model.feed.Chapter;
import de.danoeh.antennapod.core.util.Converter;
import de.danoeh.antennapod.model.feed.EmbeddedChapterImage;
import de.danoeh.antennapod.core.util.IntentUtils;
-import de.danoeh.antennapod.ui.common.ThemeUtils;
import de.danoeh.antennapod.model.playback.Playable;
import de.danoeh.antennapod.ui.common.CircularProgressBar;
@@ -85,8 +85,8 @@ public class ChaptersListAdapter extends RecyclerView.Adapter<ChaptersListAdapte
});
if (position == currentChapterIndex) {
- int playingBackGroundColor = ThemeUtils.getColorFromAttr(context, R.attr.currently_playing_background);
- holder.itemView.setBackgroundColor(playingBackGroundColor);
+ float density = context.getResources().getDisplayMetrics().density;
+ holder.itemView.setBackgroundColor(SurfaceColors.getColorForElevation(context, 8 * density));
float progress = ((float) (currentChapterPosition - sc.getStart())) / duration;
progress = Math.max(progress, CircularProgressBar.MINIMUM_PERCENTAGE);
progress = Math.min(progress, CircularProgressBar.MAXIMUM_PERCENTAGE);
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java
index a0d86d5c0..8df3e3968 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java
@@ -8,7 +8,6 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Toast;
-import androidx.core.content.ContextCompat;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.MainActivity;
import de.danoeh.antennapod.net.download.serviceinterface.DownloadRequest;
@@ -93,7 +92,7 @@ public class DownloadLogAdapter extends BaseAdapter {
}
if (status.isSuccessful()) {
- holder.icon.setTextColor(ContextCompat.getColor(context, R.color.download_success_green));
+ holder.icon.setTextColor(ThemeUtils.getColorFromAttr(context, R.attr.icon_green));
holder.icon.setText("{fa-check-circle}");
holder.icon.setContentDescription(context.getString(R.string.download_successful));
holder.secondaryActionButton.setVisibility(View.INVISIBLE);
@@ -101,10 +100,10 @@ public class DownloadLogAdapter extends BaseAdapter {
holder.tapForDetails.setVisibility(View.GONE);
} else {
if (status.getReason() == DownloadError.ERROR_PARSER_EXCEPTION_DUPLICATE) {
- holder.icon.setTextColor(ContextCompat.getColor(context, R.color.download_warning_yellow));
+ holder.icon.setTextColor(ThemeUtils.getColorFromAttr(context, R.attr.icon_yellow));
holder.icon.setText("{fa-exclamation-circle}");
} else {
- holder.icon.setTextColor(ContextCompat.getColor(context, R.color.download_failed_red));
+ holder.icon.setTextColor(ThemeUtils.getColorFromAttr(context, R.attr.icon_red));
holder.icon.setText("{fa-times-circle}");
}
holder.icon.setContentDescription(context.getString(R.string.error_label));
diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/ProxyDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/ProxyDialog.java
index 68dd60372..4d9c526c0 100644
--- a/app/src/main/java/de/danoeh/antennapod/dialog/ProxyDialog.java
+++ b/app/src/main/java/de/danoeh/antennapod/dialog/ProxyDialog.java
@@ -6,7 +6,6 @@ import android.content.res.TypedArray;
import android.os.Build;
import androidx.appcompat.app.AlertDialog;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
-import androidx.core.content.ContextCompat;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
@@ -31,6 +30,7 @@ import de.danoeh.antennapod.R;
import de.danoeh.antennapod.storage.preferences.UserPreferences;
import de.danoeh.antennapod.core.service.download.AntennapodHttpClient;
import de.danoeh.antennapod.model.download.ProxyConfig;
+import de.danoeh.antennapod.ui.common.ThemeUtils;
import io.reactivex.Completable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
@@ -299,7 +299,7 @@ public class ProxyDialog {
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
() -> {
- txtvMessage.setTextColor(ContextCompat.getColor(context, R.color.download_success_green));
+ txtvMessage.setTextColor(ThemeUtils.getColorFromAttr(context, R.attr.icon_green));
String message = String.format("%s %s", "{fa-check}",
context.getString(R.string.proxy_test_successful));
txtvMessage.setText(message);
@@ -307,7 +307,7 @@ public class ProxyDialog {
},
error -> {
error.printStackTrace();
- txtvMessage.setTextColor(ContextCompat.getColor(context, R.color.download_failed_red));
+ txtvMessage.setTextColor(ThemeUtils.getColorFromAttr(context, R.attr.icon_red));
String message = String.format("%s %s: %s", "{fa-close}",
context.getString(R.string.proxy_test_failed), error.getMessage());
txtvMessage.setText(message);
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java
index 1539ebecf..530d87e7f 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java
@@ -121,7 +121,8 @@ public class AudioPlayerFragment extends Fragment implements
getChildFragmentManager().beginTransaction()
.replace(R.id.playerFragment, externalPlayerFragment, ExternalPlayerFragment.TAG)
.commit();
- root.findViewById(R.id.playerFragment).setBackgroundColor(SurfaceColors.getColorForElevation(getContext(), 8));
+ root.findViewById(R.id.playerFragment).setBackgroundColor(
+ SurfaceColors.getColorForElevation(getContext(), 8 * getResources().getDisplayMetrics().density));
butPlaybackSpeed = root.findViewById(R.id.butPlaybackSpeed);
txtvPlaybackSpeed = root.findViewById(R.id.txtvPlaybackSpeed);
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/UserInterfacePreferencesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/UserInterfacePreferencesFragment.java
index 59c2c4a8e..caf555964 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/UserInterfacePreferencesFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/UserInterfacePreferencesFragment.java
@@ -44,6 +44,16 @@ public class UserInterfacePreferencesFragment extends PreferenceFragmentCompat {
return true;
});
+ if (Build.VERSION.SDK_INT < 31) {
+ findPreference(UserPreferences.PREF_TINTED_COLORS).setVisible(false);
+ }
+ findPreference(UserPreferences.PREF_TINTED_COLORS)
+ .setOnPreferenceChangeListener(
+ (preference, newValue) -> {
+ ActivityCompat.recreate(getActivity());
+ return true;
+ });
+
findPreference(UserPreferences.PREF_SHOW_TIME_LEFT)
.setOnPreferenceChangeListener(
(preference, newValue) -> {
diff --git a/app/src/main/java/de/danoeh/antennapod/preferences/MasterSwitchPreference.java b/app/src/main/java/de/danoeh/antennapod/preferences/MasterSwitchPreference.java
index 94e60ef61..62e162a7c 100644
--- a/app/src/main/java/de/danoeh/antennapod/preferences/MasterSwitchPreference.java
+++ b/app/src/main/java/de/danoeh/antennapod/preferences/MasterSwitchPreference.java
@@ -7,10 +7,10 @@ import android.os.Build;
import androidx.preference.SwitchPreferenceCompat;
import androidx.preference.PreferenceViewHolder;
import android.util.AttributeSet;
-import android.util.TypedValue;
import android.widget.TextView;
import de.danoeh.antennapod.R;
+import de.danoeh.antennapod.ui.common.ThemeUtils;
public class MasterSwitchPreference extends SwitchPreferenceCompat {
@@ -36,10 +36,7 @@ public class MasterSwitchPreference extends SwitchPreferenceCompat {
public void onBindViewHolder(PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
- TypedValue typedValue = new TypedValue();
- getContext().getTheme().resolveAttribute(R.attr.master_switch_background, typedValue, true);
- holder.itemView.setBackgroundColor(typedValue.data);
-
+ holder.itemView.setBackgroundColor(ThemeUtils.getColorFromAttr(getContext(), R.attr.colorSurfaceVariant));
TextView title = (TextView) holder.findViewById(android.R.id.title);
if (title != null) {
title.setTypeface(title.getTypeface(), Typeface.BOLD);
diff --git a/app/src/main/java/de/danoeh/antennapod/view/ChapterSeekBar.java b/app/src/main/java/de/danoeh/antennapod/view/ChapterSeekBar.java
index 7c6b64e2c..d35206647 100644
--- a/app/src/main/java/de/danoeh/antennapod/view/ChapterSeekBar.java
+++ b/app/src/main/java/de/danoeh/antennapod/view/ChapterSeekBar.java
@@ -6,6 +6,7 @@ import android.graphics.Paint;
import android.os.Handler;
import android.os.Looper;
import android.util.AttributeSet;
+import de.danoeh.antennapod.R;
import de.danoeh.antennapod.ui.common.ThemeUtils;
public class ChapterSeekBar extends androidx.appcompat.widget.AppCompatSeekBar {
@@ -42,11 +43,9 @@ public class ChapterSeekBar extends androidx.appcompat.widget.AppCompatSeekBar {
dividerPos = null;
density = context.getResources().getDisplayMetrics().density;
- paintBackground.setColor(ThemeUtils.getColorFromAttr(getContext(),
- de.danoeh.antennapod.core.R.attr.currently_playing_background));
+ paintBackground.setColor(ThemeUtils.getColorFromAttr(getContext(), R.attr.colorSurfaceVariant));
paintBackground.setAlpha(128);
- paintProgressPrimary.setColor(ThemeUtils.getColorFromAttr(getContext(),
- de.danoeh.antennapod.core.R.attr.colorPrimary));
+ paintProgressPrimary.setColor(ThemeUtils.getColorFromAttr(getContext(), R.attr.colorPrimary));
}
/**
diff --git a/app/src/main/java/de/danoeh/antennapod/view/viewholder/EpisodeItemViewHolder.java b/app/src/main/java/de/danoeh/antennapod/view/viewholder/EpisodeItemViewHolder.java
index 72ad46373..9da836a69 100644
--- a/app/src/main/java/de/danoeh/antennapod/view/viewholder/EpisodeItemViewHolder.java
+++ b/app/src/main/java/de/danoeh/antennapod/view/viewholder/EpisodeItemViewHolder.java
@@ -15,6 +15,7 @@ import android.widget.TextView;
import androidx.cardview.widget.CardView;
import androidx.recyclerview.widget.RecyclerView;
+import com.google.android.material.elevation.SurfaceColors;
import com.joanzapata.iconify.Iconify;
import de.danoeh.antennapod.R;
@@ -141,7 +142,8 @@ public class EpisodeItemViewHolder extends RecyclerView.ViewHolder {
duration.setVisibility(media.getDuration() > 0 ? View.VISIBLE : View.GONE);
if (PlaybackStatus.isCurrentlyPlaying(media)) {
- itemView.setBackgroundColor(ThemeUtils.getColorFromAttr(activity, R.attr.currently_playing_background));
+ float density = activity.getResources().getDisplayMetrics().density;
+ itemView.setBackgroundColor(SurfaceColors.getColorForElevation(activity, 8 * density));
} else {
itemView.setBackgroundResource(ThemeUtils.getDrawableFromAttr(activity, R.attr.selectableItemBackground));
}
diff --git a/app/src/main/java/de/danoeh/antennapod/view/viewholder/HorizontalItemViewHolder.java b/app/src/main/java/de/danoeh/antennapod/view/viewholder/HorizontalItemViewHolder.java
index 83d589518..05240b371 100644
--- a/app/src/main/java/de/danoeh/antennapod/view/viewholder/HorizontalItemViewHolder.java
+++ b/app/src/main/java/de/danoeh/antennapod/view/viewholder/HorizontalItemViewHolder.java
@@ -8,6 +8,7 @@ import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.cardview.widget.CardView;
import androidx.recyclerview.widget.RecyclerView;
+import com.google.android.material.elevation.SurfaceColors;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.MainActivity;
import de.danoeh.antennapod.adapter.CoverLoader;
@@ -56,6 +57,8 @@ public class HorizontalItemViewHolder extends RecyclerView.ViewHolder {
this.item = item;
card.setAlpha(1.0f);
+ float density = activity.getResources().getDisplayMetrics().density;
+ card.setCardBackgroundColor(SurfaceColors.getColorForElevation(activity, 1 * density));
new CoverLoader(activity)
.withUri(ImageResourceUtils.getEpisodeListImageLocation(item))
.withFallbackUri(item.getFeed().getImageUrl())
@@ -73,9 +76,7 @@ public class HorizontalItemViewHolder extends RecyclerView.ViewHolder {
setProgressBar(false, 0);
} else {
if (PlaybackStatus.isCurrentlyPlaying(media)) {
- card.setCardBackgroundColor(ThemeUtils.getColorFromAttr(activity, R.attr.card_background_playing));
- } else {
- card.setCardBackgroundColor(ThemeUtils.getColorFromAttr(activity, R.attr.card_background));
+ card.setCardBackgroundColor(ThemeUtils.getColorFromAttr(activity, R.attr.colorSurfaceVariant));
}
if (item.getMedia().getDuration() > 0 && item.getMedia().getPosition() > 0) {