Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixing scrolling black icons #2

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
package de.danoeh.antennapod.fragment;

import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.ClipData;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.Color;
import android.graphics.LightingColorFilter;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
Expand All @@ -24,12 +28,17 @@
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import androidx.appcompat.content.res.AppCompatResources;
import com.google.android.material.appbar.MaterialToolbar;

import androidx.core.content.ContextCompat;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsControllerCompat;
import androidx.documentfile.provider.DocumentFile;
import androidx.fragment.app.Fragment;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.google.android.material.appbar.AppBarLayout;
import com.google.android.material.appbar.CollapsingToolbarLayout;
import com.google.android.material.shape.MaterialShapeDrawable;
import com.google.android.material.snackbar.Snackbar;
import com.joanzapata.iconify.Iconify;
import de.danoeh.antennapod.R;
Expand Down Expand Up @@ -117,7 +126,7 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup c

AppBarLayout appBar = root.findViewById(R.id.appBar);
CollapsingToolbarLayout collapsingToolbar = root.findViewById(R.id.collapsing_toolbar);
ToolbarIconTintManager iconTintManager = new ToolbarIconTintManager(getContext(), toolbar, collapsingToolbar) {
ToolbarIconTintManager iconTintManager = new ToolbarIconTintManager(getActivity(), toolbar, collapsingToolbar) {
@Override
protected void doTint(Context themedContext) {
toolbar.getMenu().findItem(R.id.visit_website_item)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup c
viewBinding.progressBar.setVisibility(View.VISIBLE);

ToolbarIconTintManager iconTintManager = new ToolbarIconTintManager(
getContext(), viewBinding.toolbar, viewBinding.collapsingToolbar) {
getActivity(), viewBinding.toolbar, viewBinding.collapsingToolbar) {
@Override
protected void doTint(Context themedContext) {
viewBinding.toolbar.getMenu().findItem(R.id.refresh_item)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,30 +1,47 @@
package de.danoeh.antennapod.view;

import android.app.Activity;
import android.content.Context;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffColorFilter;
import android.graphics.drawable.Drawable;
import android.view.ContextThemeWrapper;

import androidx.core.view.WindowCompat;
import androidx.core.view.WindowInsetsControllerCompat;

import com.google.android.material.appbar.MaterialToolbar;
import com.google.android.material.appbar.AppBarLayout;
import com.google.android.material.appbar.CollapsingToolbarLayout;
import de.danoeh.antennapod.R;

public abstract class ToolbarIconTintManager implements AppBarLayout.OnOffsetChangedListener {
private final Context context;
private final Activity activity;
private final CollapsingToolbarLayout collapsingToolbar;
private final MaterialToolbar toolbar;
private boolean isTinted = false;
private boolean isWhiteIconsStatusBar = false;

public ToolbarIconTintManager(Context context, MaterialToolbar toolbar, CollapsingToolbarLayout collapsingToolbar) {
this.context = context;
public ToolbarIconTintManager(Activity activity, MaterialToolbar toolbar, CollapsingToolbarLayout collapsingToolbar) {
this.activity = activity;
this.collapsingToolbar = collapsingToolbar;
this.toolbar = toolbar;
}

@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int offset) {
boolean tint = (collapsingToolbar.getHeight() + offset) > (2 * collapsingToolbar.getMinimumHeight());
double ratio = (double) (collapsingToolbar.getHeight() + offset) / collapsingToolbar.getMinimumHeight();
System.out.println("X: " + ratio + " Offset: " + offset);

boolean whiteIconsStatusBar = ratio > 2.0 || ratio < 1.5;
boolean tint = ratio > 1.5;

if (isWhiteIconsStatusBar != whiteIconsStatusBar) {
isWhiteIconsStatusBar = whiteIconsStatusBar;
WindowInsetsControllerCompat windowInsetController = WindowCompat.getInsetsController(activity.getWindow(), activity.getWindow().getDecorView());
windowInsetController.setAppearanceLightStatusBars(whiteIconsStatusBar);
}

if (isTinted != tint) {
isTinted = tint;
updateTint();
Expand All @@ -33,12 +50,12 @@ public void onOffsetChanged(AppBarLayout appBarLayout, int offset) {

public void updateTint() {
if (isTinted) {
doTint(new ContextThemeWrapper(context, R.style.Theme_AntennaPod_Dark));
doTint(new ContextThemeWrapper(activity, R.style.Theme_AntennaPod_Dark));
safeSetColorFilter(toolbar.getNavigationIcon(), new PorterDuffColorFilter(0xffffffff, Mode.SRC_ATOP));
safeSetColorFilter(toolbar.getOverflowIcon(), new PorterDuffColorFilter(0xffffffff, Mode.SRC_ATOP));
safeSetColorFilter(toolbar.getCollapseIcon(), new PorterDuffColorFilter(0xffffffff, Mode.SRC_ATOP));
} else {
doTint(context);
doTint(activity);
safeSetColorFilter(toolbar.getNavigationIcon(), null);
safeSetColorFilter(toolbar.getOverflowIcon(), null);
safeSetColorFilter(toolbar.getCollapseIcon(), null);
Expand Down
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ buildscript {
gradlePluginPortal()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.2.2'
classpath 'com.android.tools.build:gradle:7.4.2'
classpath "gradle.plugin.com.github.spotbugs.snom:spotbugs-gradle-plugin:4.7.0"
classpath 'org.codehaus.groovy:groovy-xml:3.0.9'
}
Expand All @@ -23,7 +23,7 @@ project.ext {
// AndroidX
annotationVersion = "1.2.0"
appcompatVersion = "1.3.1"
coreVersion = "1.5.0"
coreVersion = "1.8.0"
fragmentVersion = "1.3.6"
mediaVersion = "1.4.3"
paletteVersion = "1.0.0"
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
android.useAndroidX=true
android.enableJetifier=true
android.jetifier.blacklist=bcprov-jdk15on
android.jetifier.ignorelist=bcprov-jdk15on
org.gradle.jvmargs=-Xmx4096m
5 changes: 3 additions & 2 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#Wed Mar 29 19:15:24 CEST 2023
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME