@Override public void invalidateSelf() { super.invalidateSelf(); wrapped.invalidateSelf(); }
public void setStartEndTrim(float startAngle, float endAngle) { mRing.mStartTrim = (startAngle); mRing.mEndTrim = (endAngle); final Drawable thisDrawable = this; thisDrawable.invalidateSelf(); }
void setRotation(float rotation) { mRotation = rotation; final Drawable thisDrawable = this; thisDrawable.invalidateSelf(); }
public void showArrow(boolean show) { if (mRing.mShowArrow != show) { mRing.mShowArrow = show; final Drawable thisDrawable = this; thisDrawable.invalidateSelf(); } }
public void setArrowScale(float scale) { if (mRing.mArrowScale != scale) { mRing.mArrowScale = scale; final Drawable thisDrawable = this; thisDrawable.invalidateSelf(); } }
public void setProgressRotation(float rotation) { mRing.mRotation = (rotation); final Drawable thisDrawable = this; thisDrawable.invalidateSelf(); }
@Override public void setColorFilter(ColorFilter colorFilter) { mRing.mPaint.setColorFilter(colorFilter); final Drawable thisDrawable = this; thisDrawable.invalidateSelf(); }
@Override public void onAnimationUpdate(ValueAnimator animation) { int value = (int) animation.getAnimatedValue(); mProgressDegree = 30 * (value / 30); final Drawable drawable = ProgressDrawable.this; drawable.invalidateSelf(); }
@Override public void invalidateSelf() { super.invalidateSelf(); scheduleNextRender(); }
private void setSizeParameters(int progressCircleWidth, int progressCircleHeight, float centerRadius, float strokeWidth, float arrowWidth, float arrowHeight) { final DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics(); final float screenDensity = metrics.density; mWidth = progressCircleWidth * screenDensity; mHeight = progressCircleHeight * screenDensity; mRing.setColorIndex(0); mRing.mPaint.setStrokeWidth(strokeWidth * screenDensity); mRing.mStrokeWidth = strokeWidth * screenDensity; mRing.mRingCenterRadius = (centerRadius * screenDensity); mRing.mArrowWidth = (int) (arrowWidth * screenDensity); mRing.mArrowHeight = (int) (arrowHeight * screenDensity); mRing.setInsets((int) mWidth, (int) mHeight); final Drawable thisDrawable = this; thisDrawable.invalidateSelf(); }
/** * Return a tint drawable * * @param drawable * @param color * @param forceTint * @return */ public static Drawable getTintDrawable(Drawable drawable, @ColorInt int color, boolean forceTint) { if (forceTint) { drawable.clearColorFilter(); drawable.mutate().setColorFilter(color, PorterDuff.Mode.SRC_IN); drawable.invalidateSelf(); return drawable; } Drawable wrapDrawable = DrawableCompat.wrap(drawable).mutate(); DrawableCompat.setTint(wrapDrawable, color); return wrapDrawable; }
public static void tintViewDrawable(View view, Drawable drawable, TintInfo tint) { if (view == null || drawable == null) return; if (tint.mHasTintList || tint.mHasTintMode) { drawable.mutate(); if (drawable instanceof ColorDrawable) { ((ColorDrawable) drawable).setColor(ThemeUtils.replaceColor(view.getContext(), tint.mTintList.getColorForState(view.getDrawableState(), tint.mTintList.getDefaultColor()))); } else { drawable.setColorFilter(createTintFilter(view.getContext(), tint.mHasTintList ? tint.mTintList : null, tint.mHasTintMode ? tint.mTintMode : DEFAULT_MODE, view.getDrawableState())); } } else { drawable.clearColorFilter(); } if (Build.VERSION.SDK_INT <= 23) { // On Gingerbread, GradientDrawable does not invalidate itself when it's ColorFilter // has changed, so we need to force an invalidation drawable.invalidateSelf(); } }
public static void tintViewBackground(View view, TintInfo tint) { Drawable background; if (view == null || (background = view.getBackground()) == null) return; if (tint.mHasTintList || tint.mHasTintMode) { background.mutate(); if (background instanceof ColorDrawable) { ((ColorDrawable) background).setColor(ThemeUtils.replaceColor(view.getContext(), tint.mTintList.getColorForState(view.getDrawableState(), tint.mTintList.getDefaultColor()))); } else { background.setColorFilter(createTintFilter(view.getContext(), tint.mHasTintList ? tint.mTintList : null, tint.mHasTintMode ? tint.mTintMode : DEFAULT_MODE, view.getDrawableState())); } } else { background.clearColorFilter(); } if (Build.VERSION.SDK_INT <= 23) { // On Gingerbread, GradientDrawable does not invalidate itself when it's ColorFilter // has changed, so we need to force an invalidation background.invalidateSelf(); } }
@Test public void testViewRemoval() { simpleMultiCallback.addView(view); drawable.setCallback(simpleMultiCallback); drawable.invalidateSelf(); simpleMultiCallback.removeView(view); drawable.invalidateSelf(); verify(view).invalidateDrawable(drawable); }
@Test public void testViewInvalidate() { final MultiCallback viewInvalidateMultiCallback = new MultiCallback(true); viewInvalidateMultiCallback.addView(view); drawable.setCallback(viewInvalidateMultiCallback); drawable.invalidateSelf(); verify(view).invalidate(); } }
@Test public void testInvalidateDrawable() { simpleMultiCallback.addView(view); drawable.setCallback(simpleMultiCallback); drawable.invalidateSelf(); verify(view).invalidateDrawable(drawable); }
tintDrawable.invalidateSelf();
@Test public void testWasSelfInvalidated() throws Exception { Drawable drawable = ShadowDrawable.createFromResourceId(34758); ShadowDrawable shadowDrawable = shadowOf(drawable); assertThat(shadowDrawable.wasInvalidated()).isFalse(); drawable.invalidateSelf(); assertThat(shadowDrawable.wasInvalidated()).isTrue(); }
@Override public void invalidateSelf() { super.invalidateSelf(); view.invalidate(); }
@Override public void invalidateSelf() { super.invalidateSelf(); view.invalidate(); }