private void postInvalidateOnAnimation() { ViewCompat.postInvalidateOnAnimation(mRecyclerView); }
@Override public void computeScroll() { if (sheetDragHelper.continueSettling(true)) { ViewCompat.postInvalidateOnAnimation(this); } }
/** * Reset the animation */ public void reset() { mStartTime = 0; changeState(STATE_NOT_STARTED); ViewCompat.postInvalidateOnAnimation(this); }
/** * Draw the SVG, skipping any animation. */ public void setToFinishedFrame() { mStartTime = 1; changeState(STATE_FINISHED); ViewCompat.postInvalidateOnAnimation(this); }
/** * Start the animation */ public void start() { mStartTime = System.currentTimeMillis(); changeState(STATE_TRACE_STARTED); ViewCompat.postInvalidateOnAnimation(this); }
public void setScrollPixelOffset(int offset) { if (scrollOffset != offset) { scrollOffset = offset; if (lineCount == 1) { setScrollOffsetSingleLine(); } else { setScrollOffsetMultiLine(); } ViewCompat.postInvalidateOnAnimation(this); } }
@SuppressWarnings("ConstantConditions") @Override public void onDrawOver(@NonNull Canvas c, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { boolean needsInvalidate = false; if (mGlow1 != null) { needsInvalidate |= drawGlow(c, parent, mGlow1Dir, mGlow1); } if (mGlow2 != null) { needsInvalidate |= drawGlow(c, parent, mGlow2Dir, mGlow2); } if (needsInvalidate) { ViewCompat.postInvalidateOnAnimation(parent); } }
public void pullFirstEdge(float deltaDistance) { ensureGlow1(mRecyclerView); EdgeEffectCompat.onPull(mGlow1, deltaDistance, 0.5f); ViewCompat.postInvalidateOnAnimation(mRecyclerView); }
public void pullSecondEdge(float deltaDistance) { ensureGlow2(mRecyclerView); EdgeEffectCompat.onPull(mGlow2, deltaDistance, 0.5f); ViewCompat.postInvalidateOnAnimation(mRecyclerView); }
@Override public void onAnimationEnd(View view) { ViewPropertyAnimatorCompat animator = ViewCompat.animate(view); animator.setListener(null); resetDraggingItemViewEffects(view, initialTranslationZ); // invalidate explicitly to refresh other decorations if (view.getParent() instanceof RecyclerView) { ViewCompat.postInvalidateOnAnimation((RecyclerView) view.getParent()); } }
public boolean refresh(boolean force) { final int prevTranslationX = mTranslationX; final int prevTranslationY = mTranslationY; updateTranslationOffset(); final boolean updated = (prevTranslationX != mTranslationX) || (prevTranslationY != mTranslationY); if (updated || force) { updateDraggingItemPosition(mTranslationX, mTranslationY); ViewCompat.postInvalidateOnAnimation(mRecyclerView); } return updated; }
@Override public void onDrawOver(@NonNull Canvas c, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { if (mDraggingItemImage == null) { return; } final int elapsedMillis = (int) Math.min(System.currentTimeMillis() - mStartMillis, mStartAnimationDurationMillis); final float t = (mStartAnimationDurationMillis > 0) ? ((float) elapsedMillis / mStartAnimationDurationMillis) : 1.0f; final float tScale = getInterpolation(mScaleInterpolator, t); final float scaleX = tScale * (mTargetDraggingItemScale - mInitialDraggingItemScaleX) + mInitialDraggingItemScaleX; final float scaleY = tScale * (mTargetDraggingItemScale - mInitialDraggingItemScaleY) + mInitialDraggingItemScaleY; final float alpha = getInterpolation(mAlphaInterpolator, t) * (mTargetDraggingItemAlpha - 1.0f) + 1.0f; final float rotation = getInterpolation(mRotationInterpolator, t) * mTargetDraggingItemRotation; if (scaleX > 0.0f && scaleY > 0.0f && alpha > 0.0f) { mPaint.setAlpha((int) (alpha * 255)); int savedCount = c.save(); c.translate(mTranslationX + mDraggingItemInfo.grabbedPositionX, mTranslationY + mDraggingItemInfo.grabbedPositionY); c.scale(scaleX, scaleY); c.rotate(rotation); c.translate(-(mShadowPadding.left + mDraggingItemInfo.grabbedPositionX), -(mShadowPadding.top + mDraggingItemInfo.grabbedPositionY)); c.drawBitmap(mDraggingItemImage, 0, 0, mPaint); c.restoreToCount(savedCount); } if (t < 1.0f) { ViewCompat.postInvalidateOnAnimation(mRecyclerView); } mLastDraggingItemScaleX = scaleX; mLastDraggingItemScaleY = scaleY; mLastDraggingItemRotation = rotation; mLastDraggingItemAlpha = alpha; }
@Override public void onAnimationEnd(View view) { mAnimator.setListener(null); // [WORKAROUND] // Issue 189686: NPE can be occurred when using the ViewPropertyAnimatorCompat // https://code.google.com/p/android/issues/detail?id=189686 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { InternalHelperKK.clearViewPropertyAnimatorUpdateListener(view); } else { mAnimator.setUpdateListener(null); } view.setTranslationX(mToX); view.setTranslationY(mToY); mActive.remove(mViewHolder); // [WORKAROUND] // issue #152 - bug:Samsung S3 4.1.1(Genymotion) with swipe left ViewParent itemParentView = mViewHolder.itemView.getParent(); if (itemParentView != null) { ViewCompat.postInvalidateOnAnimation((View) itemParentView); } if (mSwipeFinish != null) { mSwipeFinish.resultAction.slideAnimationEnd(); } // clean up mActive = null; mAnimator = null; mViewHolder = null; mAdapter = null; }
ViewCompat.postInvalidateOnAnimation(mView);
private void calculateCurrentOffsets() { final float fraction = mExpandedFraction; interpolateBounds(fraction); mCurrentDrawX = lerp(mExpandedDrawX, mCollapsedDrawX, fraction, mPositionInterpolator); mCurrentDrawY = lerp(mExpandedDrawY, mCollapsedDrawY, fraction, mPositionInterpolator); setInterpolatedTextSize(lerp(mExpandedTextSize, mCollapsedTextSize, fraction, mTextSizeInterpolator)); if (mCollapsedTextColor != mExpandedTextColor) { // If the collapsed and expanded text colors are different, blend them based on the // fraction mTextPaint.setColor(blendColors(mExpandedTextColor, mCollapsedTextColor, fraction)); } else { mTextPaint.setColor(mCollapsedTextColor); } ViewCompat.postInvalidateOnAnimation(mView); }
@Override protected void drawableStateChanged() { super.drawableStateChanged(); if (mMaskDrawable != null && mMaskDrawable.isStateful()) { mMaskDrawable.setState(getDrawableState()); } if (isDuplicateParentStateEnabled()) { ViewCompat.postInvalidateOnAnimation(this); } }
public void releaseBothGlows() { boolean needsInvalidate = false; if (mGlow1 != null) { mGlow1.onRelease(); //noinspection ConstantConditions needsInvalidate |= mGlow1.isFinished(); } if (mGlow2 != null) { mGlow2.onRelease(); needsInvalidate |= mGlow2.isFinished(); } if (needsInvalidate) { ViewCompat.postInvalidateOnAnimation(mRecyclerView); } }
ViewCompat.postInvalidateOnAnimation(this); } else { changeState(STATE_FINISHED);
@Override public void computeScroll() { mIsScrollStarted = true; if (!mScroller.isFinished() && mScroller.computeScrollOffset()) { int oldX = getScrollX(); int oldY = getScrollY(); int x = mScroller.getCurrX(); int y = mScroller.getCurrY(); if (oldX != x || oldY != y) { scrollTo(x, y); if (isHorizontal()) { if (!pageScrolled(x, 0)) { mScroller.abortAnimation(); scrollTo(0, y); } } else { if (!pageScrolled(0, y)) { mScroller.abortAnimation(); scrollTo(x, 0); } } } // Keep on drawing until the animation has finished. ViewCompat.postInvalidateOnAnimation(this); return; } // Done with scroll, clean up state. completeScroll(true); }
ViewCompat.postInvalidateOnAnimation(this);