From 609b75b93c6f388d2e6d29b152995c9998abd6d5 Mon Sep 17 00:00:00 2001 From: Jonathan Trowbridge Date: Fri, 3 Jul 2020 14:45:02 -0400 Subject: [PATCH 1/4] Bumped dependency versions --- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 4 ++-- library/build.gradle | 4 ++-- sample/build.gradle | 12 +++++++++--- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/build.gradle b/build.gradle index ac4cc75..6092c65 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.3.1' + classpath 'com.android.tools.build:gradle:3.6.3' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c844430..1b39aeb 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sun Feb 24 16:53:08 PST 2019 +#Fri Jul 03 13:57:12 EDT 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip diff --git a/library/build.gradle b/library/build.gradle index f89e7b3..b6cffae 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -22,8 +22,8 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'androidx.appcompat:appcompat:1.0.2' - implementation 'androidx.annotation:annotation:1.0.1' + implementation 'androidx.appcompat:appcompat:1.1.0' + implementation 'androidx.annotation:annotation:1.1.0' } apply from: '../gradle-mvn-push.gradle' diff --git a/sample/build.gradle b/sample/build.gradle index 2b475b5..21d2e4d 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -30,12 +30,18 @@ android { signingConfig signingConfigs.release } } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'androidx.appcompat:appcompat:1.0.2' - implementation 'com.jakewharton:butterknife:9.0.0-rc1' - annotationProcessor 'com.jakewharton:butterknife-compiler:9.0.0-rc1' + implementation 'androidx.appcompat:appcompat:1.1.0' + implementation 'com.jakewharton:butterknife:10.1.0' + annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0' + implementation project(':library') } From cc8ed72b5bf36214950cb6a9259d20607e2d3070 Mon Sep 17 00:00:00 2001 From: Jonathan Trowbridge Date: Fri, 3 Jul 2020 14:56:44 -0400 Subject: [PATCH 2/4] Added attribute for background tint. --- .../MaterialProgressBar.java | 35 +++++++++++++------ library/src/main/res/values/attrs.xml | 1 + sample/src/main/res/layout/main_activity.xml | 1 + sample/src/main/res/values/colors.xml | 2 ++ 4 files changed, 29 insertions(+), 10 deletions(-) diff --git a/library/src/main/java/me/zhanghai/android/materialprogressbar/MaterialProgressBar.java b/library/src/main/java/me/zhanghai/android/materialprogressbar/MaterialProgressBar.java index 14af304..c98981d 100644 --- a/library/src/main/java/me/zhanghai/android/materialprogressbar/MaterialProgressBar.java +++ b/library/src/main/java/me/zhanghai/android/materialprogressbar/MaterialProgressBar.java @@ -20,6 +20,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.TintTypedArray; + import me.zhanghai.android.materialprogressbar.internal.DrawableCompat; /** @@ -122,6 +123,11 @@ private void init(@Nullable AttributeSet attrs, int defStyleAttr, int defStyleRe R.styleable.MaterialProgressBar_mpb_indeterminateTint); mProgressTintInfo.mHasIndeterminateTint = true; } + if (a.hasValue(R.styleable.MaterialProgressBar_mpb_indeterminateBackgroundTint)) { + mProgressTintInfo.mIndeterminateBackgroundTint = a.getColorStateList( + R.styleable.MaterialProgressBar_mpb_indeterminateBackgroundTint); + mProgressTintInfo.mHasIndeterminateBackgroundTint = true; + } if (a.hasValue(R.styleable.MaterialProgressBar_mpb_indeterminateTintMode)) { mProgressTintInfo.mIndeterminateTintMode = DrawableCompat.parseTintMode(a.getInt( R.styleable.MaterialProgressBar_mpb_indeterminateTintMode, -1), null); @@ -212,7 +218,7 @@ public Drawable getCurrentDrawable() { * Get whether the current drawable is using an intrinsic padding. The default is {@code true}. * * @return Whether the current drawable is using an intrinsic padding, or {@code false} if the - * drawable does not implement {@link IntrinsicPaddingDrawable}. + * drawable does not implement {@link IntrinsicPaddingDrawable}. */ public boolean getUseIntrinsicPadding() { Drawable drawable = getCurrentDrawable(); @@ -247,7 +253,7 @@ public void setUseIntrinsicPadding(boolean useIntrinsicPadding) { * Get whether the current drawable is showing a background. The default is {@code true}. * * @return Whether the current drawable is showing a background, or {@code false} if the - * drawable does not implement {@link ShowBackgroundDrawable}. + * drawable does not implement {@link ShowBackgroundDrawable}. */ public boolean getShowProgressBackground() { Drawable drawable = getCurrentDrawable(); @@ -680,20 +686,26 @@ private void applyIndeterminateTint() { if (mProgressTintInfo.mHasIndeterminateTint || mProgressTintInfo.mHasIndeterminateTintMode) { indeterminateDrawable.mutate(); - applyTintForDrawable(indeterminateDrawable, mProgressTintInfo.mIndeterminateTint, - mProgressTintInfo.mHasIndeterminateTint, - mProgressTintInfo.mIndeterminateTintMode, - mProgressTintInfo.mHasIndeterminateTintMode); + applyTintForDrawable( + indeterminateDrawable + , mProgressTintInfo.mIndeterminateTint + , mProgressTintInfo.mHasIndeterminateTint + , mProgressTintInfo.mIndeterminateTintMode + , mProgressTintInfo.mHasIndeterminateTintMode + ); } } // Progress drawables in this library has already rewritten tint related methods for // compatibility. @SuppressLint("NewApi") - private void applyTintForDrawable(@NonNull Drawable drawable, @Nullable ColorStateList tint, - boolean hasTint, @Nullable PorterDuff.Mode tintMode, - boolean hasTintMode) { - + private void applyTintForDrawable( + @NonNull Drawable drawable + , @Nullable ColorStateList tint + , boolean hasTint + , @Nullable PorterDuff.Mode tintMode + , boolean hasTintMode + ) { if (hasTint || hasTintMode) { if (hasTint) { @@ -759,8 +771,11 @@ private static class TintInfo { @Nullable public ColorStateList mIndeterminateTint; @Nullable + public ColorStateList mIndeterminateBackgroundTint; + @Nullable public PorterDuff.Mode mIndeterminateTintMode; public boolean mHasIndeterminateTint; + public boolean mHasIndeterminateBackgroundTint; public boolean mHasIndeterminateTintMode; } } diff --git a/library/src/main/res/values/attrs.xml b/library/src/main/res/values/attrs.xml index f8700e5..5654a91 100644 --- a/library/src/main/res/values/attrs.xml +++ b/library/src/main/res/values/attrs.xml @@ -66,6 +66,7 @@ + diff --git a/sample/src/main/res/layout/main_activity.xml b/sample/src/main/res/layout/main_activity.xml index 0a97e6a..56c3977 100644 --- a/sample/src/main/res/layout/main_activity.xml +++ b/sample/src/main/res/layout/main_activity.xml @@ -119,6 +119,7 @@ android:indeterminate="true" app:mpb_progressStyle="horizontal" app:mpb_indeterminateTint="@color/tint" + app:mpb_indeterminateBackgroundTint="@color/tint_background_indeterminate" style="@style/Widget.MaterialProgressBar.ProgressBar.Horizontal" /> diff --git a/sample/src/main/res/values/colors.xml b/sample/src/main/res/values/colors.xml index 4363f75..f65f328 100644 --- a/sample/src/main/res/values/colors.xml +++ b/sample/src/main/res/values/colors.xml @@ -8,4 +8,6 @@ #f44336 #42f44336 + + #00FF00 From b4128f89b4e0137c2dbec0d059a2a230fed3b296 Mon Sep 17 00:00:00 2001 From: Jonathan Trowbridge Date: Fri, 3 Jul 2020 15:58:00 -0400 Subject: [PATCH 3/4] Set indeterminate background color --- ...determinateHorizontalProgressDrawable.java | 22 +++++++++++++++---- .../MaterialProgressBar.java | 8 +++++++ sample/src/main/res/layout/main_activity.xml | 2 +- sample/src/main/res/values/colors.xml | 2 -- 4 files changed, 27 insertions(+), 7 deletions(-) diff --git a/library/src/main/java/me/zhanghai/android/materialprogressbar/IndeterminateHorizontalProgressDrawable.java b/library/src/main/java/me/zhanghai/android/materialprogressbar/IndeterminateHorizontalProgressDrawable.java index 8c1d287..7fdc22a 100644 --- a/library/src/main/java/me/zhanghai/android/materialprogressbar/IndeterminateHorizontalProgressDrawable.java +++ b/library/src/main/java/me/zhanghai/android/materialprogressbar/IndeterminateHorizontalProgressDrawable.java @@ -7,6 +7,7 @@ import android.animation.Animator; import android.content.Context; +import android.content.res.ColorStateList; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.RectF; @@ -16,6 +17,7 @@ import androidx.annotation.Keep; import androidx.annotation.NonNull; import androidx.annotation.Px; + import me.zhanghai.android.materialprogressbar.internal.ThemeUtils; /** @@ -48,6 +50,8 @@ public class IndeterminateHorizontalProgressDrawable extends BaseIndeterminatePr @NonNull private final RectTransformX mRect2TransformX = new RectTransformX(RECT_2_TRANSFORM_X); + private ColorStateList mBackgroundTintList; + /** * Create a new {@code IndeterminateHorizontalProgressDrawable}. * @@ -62,7 +66,7 @@ public IndeterminateHorizontalProgressDrawable(@NonNull Context context) { mBackgroundAlpha = ThemeUtils.getFloatFromAttrRes(android.R.attr.disabledAlpha, 0, context); - mAnimators = new Animator[] { + mAnimators = new Animator[]{ Animators.createIndeterminateHorizontalRect1(mRect1TransformX), Animators.createIndeterminateHorizontalRect2(mRect2TransformX) }; @@ -76,6 +80,10 @@ public boolean getShowBackground() { return mShowBackground; } + public void setBackgroundTintList(ColorStateList tintList) { + mBackgroundTintList = tintList; + } + /** * {@inheritDoc} */ @@ -113,9 +121,15 @@ protected void onDraw(Canvas canvas, int width, int height, Paint paint) { } if (mShowBackground) { - paint.setAlpha(Math.round(mAlpha * mBackgroundAlpha)); - drawBackgroundRect(canvas, paint); - paint.setAlpha(mAlpha); + if (mBackgroundTintList == null) { + paint.setAlpha(Math.round(mAlpha * mBackgroundAlpha)); + drawBackgroundRect(canvas, paint); + paint.setAlpha(mAlpha); + } else { + Paint backgroundPaint = new Paint(); + backgroundPaint.setColor(mBackgroundTintList.getDefaultColor()); + drawBackgroundRect(canvas, backgroundPaint); + } } drawProgressRect(canvas, mRect2TransformX, paint); drawProgressRect(canvas, mRect1TransformX, paint); diff --git a/library/src/main/java/me/zhanghai/android/materialprogressbar/MaterialProgressBar.java b/library/src/main/java/me/zhanghai/android/materialprogressbar/MaterialProgressBar.java index c98981d..3c31cf4 100644 --- a/library/src/main/java/me/zhanghai/android/materialprogressbar/MaterialProgressBar.java +++ b/library/src/main/java/me/zhanghai/android/materialprogressbar/MaterialProgressBar.java @@ -680,9 +680,11 @@ private Drawable getTintTargetFromProgressDrawable(int layerId, boolean shouldFa private void applyIndeterminateTint() { Drawable indeterminateDrawable = getIndeterminateDrawable(); + if (indeterminateDrawable == null) { return; } + if (mProgressTintInfo.mHasIndeterminateTint || mProgressTintInfo.mHasIndeterminateTintMode) { indeterminateDrawable.mutate(); @@ -694,6 +696,12 @@ private void applyIndeterminateTint() { , mProgressTintInfo.mHasIndeterminateTintMode ); } + + if (mProgressTintInfo.mHasIndeterminateBackgroundTint) { + ((IndeterminateHorizontalProgressDrawable) indeterminateDrawable).setBackgroundTintList( + mProgressTintInfo.mIndeterminateBackgroundTint + ); + } } // Progress drawables in this library has already rewritten tint related methods for diff --git a/sample/src/main/res/layout/main_activity.xml b/sample/src/main/res/layout/main_activity.xml index 56c3977..d51b9bb 100644 --- a/sample/src/main/res/layout/main_activity.xml +++ b/sample/src/main/res/layout/main_activity.xml @@ -119,7 +119,7 @@ android:indeterminate="true" app:mpb_progressStyle="horizontal" app:mpb_indeterminateTint="@color/tint" - app:mpb_indeterminateBackgroundTint="@color/tint_background_indeterminate" + app:mpb_indeterminateBackgroundTint="@color/tint_background" style="@style/Widget.MaterialProgressBar.ProgressBar.Horizontal" /> diff --git a/sample/src/main/res/values/colors.xml b/sample/src/main/res/values/colors.xml index f65f328..4363f75 100644 --- a/sample/src/main/res/values/colors.xml +++ b/sample/src/main/res/values/colors.xml @@ -8,6 +8,4 @@ #f44336 #42f44336 - - #00FF00 From a50090eefab53aea248123ca7fafec0af62a0c37 Mon Sep 17 00:00:00 2001 From: Jonathan Trowbridge Date: Fri, 3 Jul 2020 16:09:22 -0400 Subject: [PATCH 4/4] Added getter and setter --- .../MaterialProgressBar.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/library/src/main/java/me/zhanghai/android/materialprogressbar/MaterialProgressBar.java b/library/src/main/java/me/zhanghai/android/materialprogressbar/MaterialProgressBar.java index 3c31cf4..31a27ef 100644 --- a/library/src/main/java/me/zhanghai/android/materialprogressbar/MaterialProgressBar.java +++ b/library/src/main/java/me/zhanghai/android/materialprogressbar/MaterialProgressBar.java @@ -436,6 +436,26 @@ public void setIndeterminateTintList(@Nullable ColorStateList tint) { setSupportIndeterminateTintList(tint); } + /** + * Get the indeterminate progress bar background {@link ColorStateList}. + */ + public ColorStateList getIndeterminateBackgroundTintList() { + logProgressBarTintWarning(); + return mProgressTintInfo.mIndeterminateBackgroundTint; + } + + /** + * Set the indeterminate progress bar background {@link ColorStateList}. + */ + public void setIndeterminateBackgroundTintList(@Nullable ColorStateList tint) { + logProgressBarTintWarning(); + + mProgressTintInfo.mIndeterminateBackgroundTint = tint; + mProgressTintInfo.mHasIndeterminateBackgroundTint = true; + + applyIndeterminateTint(); + } + /** * @deprecated Use {@link #getSupportIndeterminateTintMode()} instead. */