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/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 14af304..31a27ef 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(); @@ -430,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. */ @@ -674,26 +700,40 @@ private Drawable getTintTargetFromProgressDrawable(int layerId, boolean shouldFa private void applyIndeterminateTint() { Drawable indeterminateDrawable = getIndeterminateDrawable(); + if (indeterminateDrawable == null) { return; } + 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 + ); + } + + if (mProgressTintInfo.mHasIndeterminateBackgroundTint) { + ((IndeterminateHorizontalProgressDrawable) indeterminateDrawable).setBackgroundTintList( + mProgressTintInfo.mIndeterminateBackgroundTint + ); } } // 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 +799,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/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') } diff --git a/sample/src/main/res/layout/main_activity.xml b/sample/src/main/res/layout/main_activity.xml index 0a97e6a..d51b9bb 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" style="@style/Widget.MaterialProgressBar.ProgressBar.Horizontal" />