/** 开启打开动画 */ private void startAnim() { ObjectAnimator tranAnimY = ObjectAnimator.ofFloat(mMenuViewSmall, "translationY", 0, -20); ObjectAnimator tranAnimPointX = ObjectAnimator.ofFloat(mMenuViewSmall, "translationX", 0, viewMoveX); ObjectAnimator tranAnimPointY = ObjectAnimator.ofFloat(mMenuViewSmall, "translationY", -20, viewMoveY); ObjectAnimator scaleAnimX = ObjectAnimator.ofFloat(mMenuViewSmall, "scaleX", 1.0f, (toValueX + 1.0f)); ObjectAnimator scaleAnimY = ObjectAnimator.ofFloat(mMenuViewSmall, "scaleY", 1.0f, (toValueY + 1.0f)); AnimatorSet set = new AnimatorSet(); set.setDuration(500); set.play(tranAnimY) .before(tranAnimPointX) .before(tranAnimPointY) .before(scaleAnimX) .before(scaleAnimY); scaleAnimX.addUpdateListener( new AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { float value = (float) animation.getAnimatedValue(); // mMenuViewSmall.setScaleX(value); mContentView.setAlpha((float) (1 - ((value - 1) / toValueX) * 0.5)); mContentView.setScaleX((float) (1 - ((value - 1) / toValueX) * 0.2)); mContentView.setScaleY((float) (1 - ((value - 1) / toValueX) * 0.2)); } }); set.addListener(this); set.start(); }
private void stopAnimator() { ObjectAnimator scaleXAnimator = ObjectAnimator.ofFloat(this, "scaleX", 1, 0); ObjectAnimator scaleYAnimator = ObjectAnimator.ofFloat(this, "scaleY", 1, 0); scaleXAnimator.setDuration(300); scaleXAnimator.setInterpolator(new LinearInterpolator()); scaleYAnimator.setDuration(300); scaleYAnimator.setInterpolator(new LinearInterpolator()); AnimatorSet animatorSet = new AnimatorSet(); animatorSet.playTogether(scaleXAnimator, scaleYAnimator); animatorSet.addListener( new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) {} @Override public void onAnimationEnd(Animator animation) { isStart = false; } @Override public void onAnimationCancel(Animator animation) {} @Override public void onAnimationRepeat(Animator animation) {} }); animatorSet.start(); }
/** 下落 */ public void freeFall() { ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(shapeLoadingView, "translationY", 0, mDistance); ObjectAnimator scaleIndication = ObjectAnimator.ofFloat(indicationIm, "scaleX", 1, 0.2f); objectAnimator.setDuration(ANIMATION_DURATION); objectAnimator.setInterpolator(new AccelerateInterpolator()); AnimatorSet animatorSet = new AnimatorSet(); animatorSet.setDuration(ANIMATION_DURATION); animatorSet.playTogether(objectAnimator, scaleIndication); animatorSet.addListener( new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) {} @Override public void onAnimationEnd(Animator animation) { shapeLoadingView.changeShape(); upThrow(); } @Override public void onAnimationCancel(Animator animation) {} @Override public void onAnimationRepeat(Animator animation) {} }); animatorSet.start(); }
private void animateHide() { bubbleHideAnimator = new AnimatorSet(); this.setPivotX(this.getWidth()); this.setPivotY(this.getHeight()); Animator shrinkerX = ObjectAnimator.ofFloat(this, SCALE_X, 1f, 0f).setDuration(BUBBLE_ANIMATION_DURATION); Animator shrinkerY = ObjectAnimator.ofFloat(this, SCALE_Y, 1f, 0f).setDuration(BUBBLE_ANIMATION_DURATION); Animator alpha = ObjectAnimator.ofFloat(this, ALPHA, 1f, 0f).setDuration(BUBBLE_ANIMATION_DURATION); bubbleHideAnimator.setInterpolator(new AccelerateInterpolator()); bubbleHideAnimator.playTogether(shrinkerX, shrinkerY, alpha); bubbleHideAnimator.addListener( new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); FastScrollBubble.this.setVisibility(INVISIBLE); bubbleHideAnimator = null; } @Override public void onAnimationCancel(Animator animation) { super.onAnimationCancel(animation); FastScrollBubble.this.setVisibility(INVISIBLE); bubbleHideAnimator = null; } }); bubbleHideAnimator.start(); }
public void showFullToolbar(int duration) { mIsToolbarShown = true; final AnimatorSet animatorSet = buildAnimationSet( duration, buildAnimation(mToolbarView, -mToolbarHeight, 0), buildAnimation(mTitle, -mToolbarHeight, 0)); animatorSet.addListener( new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animator) { updateFlexibleSpaceText(mScrollY); // dirty update fling-fix } @Override public void onAnimationEnd(Animator animator) { updateFlexibleSpaceText(mScrollY); // dirty update fling-fix } @Override public void onAnimationCancel(Animator animator) {} @Override public void onAnimationRepeat(Animator animator) {} }); animatorSet.start(); }
private void performSwitch() { ObjectAnimator animator1 = ObjectAnimator.ofFloat( mFirstView, "translationY", mFirstView.getTranslationY() - mBannerHeight); ObjectAnimator animator2 = ObjectAnimator.ofFloat( mSecondView, "translationY", mSecondView.getTranslationY() - mBannerHeight); AnimatorSet set = new AnimatorSet(); set.playTogether(animator1, animator2); set.addListener( new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { mFirstView.setTranslationY(0); mSecondView.setTranslationY(0); View removedView = getChildAt(0); mPosition++; mAdapter.setItem(removedView, mAdapter.getItem(mPosition % mAdapter.getCount())); removeView(removedView); addView(removedView, 1); } }); set.setDuration(mAnimDuration); set.start(); }
private void startAnimation(View img, final Intent intent) { // ObjectAnimator oaTranslationX = ObjectAnimator.ofFloat(img, // "translationX", 0, mScreenWidth / 2); // ObjectAnimator oaTranslationY = ObjectAnimator.ofFloat(img, // "translationY", 0, mScreenHeight / 2); ObjectAnimator oaScaleX = ObjectAnimator.ofFloat(img, "scaleX", 0.5f, 1.2f, 1f); ObjectAnimator oaScaleY = ObjectAnimator.ofFloat(img, "scaleY", 0.5f, 1.2f, 1f); // oaTranslationX.setDuration(1000); // oaTranslationY.setDuration(1000); // oaScaleX.setDuration(1000); // oaScaleY.setDuration(1000); AnimatorSet set = new AnimatorSet(); set.addListener( new AnimatorListenerAdapter() { @Override public void onAnimationStart(Animator animation) { isLocked = true; super.onAnimationStart(animation); } @Override public void onAnimationEnd(Animator animation) { Log.e("", "动画完成"); isLocked = false; startActivity(intent); } }); set.play(oaScaleX).with(oaScaleY); set.setDuration(500); if (!isLocked) { set.start(); } }
private AnimatorSet createAnimationSet() { List<Animator> animators = new ArrayList<>(); view.setLayerType(View.LAYER_TYPE_HARDWARE, null); if (!objectAnimations.isEmpty()) for (AnimationParams customAnimation : objectAnimations) { animators.add(createAnimation(view, customAnimation)); } if (this.animators != null) for (Animator animator : this.animators) { animators.add(animator); } AnimatorSet animatorSet = new AnimatorSet(); animatorSet.playTogether(animators); if (interpolator != null) { animatorSet.setInterpolator(interpolator); } animatorSet.setDuration(duration); animatorSet.addListener( new AnimatorListenerAdapter() { @Override public void onAnimationCancel(Animator animation) { super.onAnimationCancel(animation); view.setLayerType(View.LAYER_TYPE_NONE, null); } @Override public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); view.setLayerType(View.LAYER_TYPE_NONE, null); } }); return animatorSet; }
private void animateFadeOutFadeIn(final View src, final View dst) { if (dst.getVisibility() != View.VISIBLE || dst.getAlpha() != 1f) { AnimatorSet set = new AnimatorSet(); set.playSequentially( ObjectAnimator.ofFloat(src, "alpha", 0f), ObjectAnimator.ofFloat(dst, "alpha", 1f)); set.setInterpolator(new LinearInterpolator()); set.addListener( new AnimatorListener() { @Override public void onAnimationStart(Animator animation) { src.setAlpha(1f); dst.setAlpha(0f); src.setVisibility(View.VISIBLE); dst.setVisibility(View.VISIBLE); } @Override public void onAnimationRepeat(Animator animation) {} @Override public void onAnimationEnd(Animator animation) { src.setVisibility(View.GONE); } @Override public void onAnimationCancel(Animator animation) {} }); set.setDuration(250); set.start(); } else { src.setAlpha(1f); src.setVisibility(View.GONE); } }
@TargetApi(Build.VERSION_CODES.HONEYCOMB) @SuppressLint("NewApi") private void init() { mXAnimator = ObjectAnimator.ofFloat(this, "x", 0); mYAnimator = ObjectAnimator.ofFloat(this, "y", 0); mWAnimator = ObjectAnimator.ofInt(this, "wid", 0); mHAnimator = ObjectAnimator.ofInt(this, "hei", 0); mAnimatorSet = new AnimatorSet(); mAnimatorSet.setDuration(AnimationDuration); mAnimatorSet.playTogether(mWAnimator, mHAnimator, mXAnimator, mYAnimator); mAnimatorSet.addListener( new AnimatorListener() { @Override public void onAnimationStart(Animator animation) {} @Override public void onAnimationRepeat(Animator animation) {} @Override public void onAnimationEnd(Animator animation) { if (getVisibility() != View.VISIBLE) { setVisibility(View.VISIBLE); } } @Override public void onAnimationCancel(Animator animation) {} }); }
/** * Set a listener before the start of the animation. * * @param listenerStart an interface called before the animation * @return AnimatorSetBuilder. */ public AnimatorSetBuilder listenerStart(final AnimatorBuilder.ListenerStart listenerStart) { this.listenerStart = listenerStart; if (pathViewAnimatorListener == null) { pathViewAnimatorListener = new PathViewAnimatorListener(); animatorSet.addListener(pathViewAnimatorListener); } return this; }
/** * Set a listener after of the animation. * * @param animationEnd an interface called after the animation * @return AnimatorSetBuilder. */ public AnimatorSetBuilder listenerEnd(final AnimatorBuilder.ListenerEnd animationEnd) { this.animationEnd = animationEnd; if (pathViewAnimatorListener == null) { pathViewAnimatorListener = new PathViewAnimatorListener(); animatorSet.addListener(pathViewAnimatorListener); } return this; }
@Override public void animate() { final ViewGroup parentView = (ViewGroup) view.getParent(); final FrameLayout slideOutFrame = new FrameLayout(view.getContext()); final int positionView = parentView.indexOfChild(view); slideOutFrame.setLayoutParams(view.getLayoutParams()); slideOutFrame.setClipChildren(true); parentView.removeView(view); slideOutFrame.addView(view); parentView.addView(slideOutFrame, positionView); switch (direction) { case DIRECTION_LEFT: slideAnim = ObjectAnimator.ofFloat( view, View.TRANSLATION_X, view.getTranslationX() - view.getWidth()); break; case DIRECTION_RIGHT: slideAnim = ObjectAnimator.ofFloat( view, View.TRANSLATION_X, view.getTranslationX() + view.getWidth()); break; case DIRECTION_UP: slideAnim = ObjectAnimator.ofFloat( view, View.TRANSLATION_Y, view.getTranslationY() - view.getHeight()); break; case DIRECTION_DOWN: slideAnim = ObjectAnimator.ofFloat( view, View.TRANSLATION_Y, view.getTranslationY() + view.getHeight()); break; default: break; } AnimatorSet slideSet = new AnimatorSet(); slideSet.play(slideAnim); slideSet.setInterpolator(interpolator); slideSet.setDuration(duration); slideSet.addListener( new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { view.setVisibility(View.INVISIBLE); slideAnim.reverse(); slideOutFrame.removeAllViews(); parentView.removeView(slideOutFrame); parentView.addView(view, positionView); if (getListener() != null) { getListener().onAnimationEnd(SlideOutUnderneathAnimation.this); } } }); slideSet.start(); }
public void compatSetOrAnimatePlusCheckIcon( final ImageView imageView, boolean isCheck, boolean allowAnimate) { final int imageResId = isCheck ? R.drawable.add_schedule_button_icon_checked : R.drawable.add_schedule_button_icon_unchecked; if (imageView.getTag() != null) { if (imageView.getTag() instanceof Animator) { Animator anim = (Animator) imageView.getTag(); anim.end(); imageView.setAlpha(1f); } } if (allowAnimate && isCheck) { int duration = mActivity.getResources().getInteger(android.R.integer.config_shortAnimTime); Animator outAnimator = ObjectAnimator.ofFloat(imageView, View.ALPHA, 0f); outAnimator.setDuration(duration / 2); outAnimator.addListener( new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { imageView.setImageResource(imageResId); } }); AnimatorSet inAnimator = new AnimatorSet(); outAnimator.setDuration(duration); inAnimator.playTogether( ObjectAnimator.ofFloat(imageView, View.ALPHA, 1f), ObjectAnimator.ofFloat(imageView, View.SCALE_X, 0f, 1f), ObjectAnimator.ofFloat(imageView, View.SCALE_Y, 0f, 1f)); AnimatorSet set = new AnimatorSet(); set.playSequentially(outAnimator, inAnimator); set.addListener( new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { imageView.setTag(null); } }); imageView.setTag(set); set.start(); } else { mHandler.post( new Runnable() { @Override public void run() { imageView.setImageResource(imageResId); } }); } }
@Override public void showFabs() { AnimatorSet animatorSet = new AnimatorSet(); animatorSet.play(hideTextContainer()); animatorSet.addListener( new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { animatedTextContainer = true; } @Override public void onAnimationEnd(Animator animation) { textContainerisShown = false; ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) viewHolder.rvChat.getLayoutParams(); Log.d( "height = ", String.valueOf( ((ViewGroup.LayoutParams) viewHolder.textContainer.getLayoutParams()).height)); lp.setMargins(lp.leftMargin, lp.topMargin, lp.rightMargin, 0); viewHolder.rvChat.requestLayout(); viewHolder.rvChat.scrollToPosition(0); viewHolder.fabAdd.setImageResource(R.drawable.add); AnimatorSet newAnimatorSet = new AnimatorSet(); viewHolder.fabAdd.setAlpha(0.64f); newAnimatorSet.playTogether(createExpandAnimator(viewHolder.fabAdd, offset)); newAnimatorSet.addListener( new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) {} @Override public void onAnimationEnd(Animator animation) { animatedTextContainer = false; } @Override public void onAnimationCancel(Animator animation) {} @Override public void onAnimationRepeat(Animator animation) {} }); newAnimatorSet.start(); } @Override public void onAnimationCancel(Animator animation) {} @Override public void onAnimationRepeat(Animator animation) {} }); animatorSet.start(); }
/** * Creates a "shrink and fade out from bottom" animation for the specified view. * * @param view The view to animate * @param listener The animation listener */ private static AnimatorSet createShrinkFadeOutFromBottomAnimation( View view, Animator.AnimatorListener listener) { AnimatorSet shrinkFadeOutFromBottomAnimation = new AnimatorSet(); shrinkFadeOutFromBottomAnimation.playTogether( ObjectAnimator.ofFloat(view, View.SCALE_Y, 1, 0.5f).setDuration(125), ObjectAnimator.ofFloat(view, View.ALPHA, 1, 0).setDuration(75)); shrinkFadeOutFromBottomAnimation.setStartDelay(150); shrinkFadeOutFromBottomAnimation.addListener(listener); return shrinkFadeOutFromBottomAnimation; }
public void animateToVisibility(int visibility) { if (mVisibilityAnim != null) { mVisibilityAnim.cancel(); } if (visibility == VISIBLE) { if (getVisibility() != VISIBLE) { setAlpha(0); if (mSplitView != null && mMenuView != null) { mMenuView.setAlpha(0); } } ObjectAnimator anim = ObjectAnimator.ofFloat(this, "alpha", 1); anim.setDuration(FADE_DURATION); anim.setInterpolator(sAlphaInterpolator); if (mSplitView != null && mMenuView != null) { AnimatorSet set = new AnimatorSet(); ObjectAnimator splitAnim = ObjectAnimator.ofFloat(mMenuView, "alpha", 1); splitAnim.setDuration(FADE_DURATION); set.addListener(mVisAnimListener.withFinalVisibility(visibility)); set.play(anim).with(splitAnim); set.start(); } else { anim.addListener(mVisAnimListener.withFinalVisibility(visibility)); anim.start(); } } else { ObjectAnimator anim = ObjectAnimator.ofFloat(this, "alpha", 0); anim.setDuration(FADE_DURATION); anim.setInterpolator(sAlphaInterpolator); if (mSplitView != null && mMenuView != null) { AnimatorSet set = new AnimatorSet(); ObjectAnimator splitAnim = ObjectAnimator.ofFloat(mMenuView, "alpha", 0); splitAnim.setDuration(FADE_DURATION); set.addListener(mVisAnimListener.withFinalVisibility(visibility)); set.play(anim).with(splitAnim); set.start(); } else { anim.addListener(mVisAnimListener.withFinalVisibility(visibility)); anim.start(); } } }
@Override public void startAnimation( final ViewHolder holder, long duration, final BaseItemAnimator animator) { System.out.println("startAnimation"); float x = (holder.itemView.getWidth() - holder.itemView.getPaddingLeft() - holder.itemView.getPaddingRight()) / 2 + holder.itemView.getPaddingLeft(); float y = holder.itemView.getHeight() - holder.itemView.getPaddingBottom(); AnimatorSet set = new AnimatorSet(); set.playTogether( ObjectAnimator.ofFloat(holder.itemView, "pivotX", x, x, x, x, x), ObjectAnimator.ofFloat(holder.itemView, "pivotY", y, y, y, y, y), ObjectAnimator.ofFloat(holder.itemView, "rotationX", 90, 55, -30, 15, -15, 0)); set.addListener( new AnimatorListener() { @Override public void onAnimationStart(Animator animation) { // TODO Auto-generated method stub } @Override public void onAnimationRepeat(Animator animation) { // TODO Auto-generated method stub } @Override public void onAnimationEnd(Animator animation) { animator.dispatchAddFinished(holder); animator.mAddAnimations.remove(holder); animator.dispatchFinishedWhenDone(); } @Override public void onAnimationCancel(Animator animation) { // TODO Auto-generated method stub } }); set.setStartDelay(mDelay * mDelayCount); set.setDuration(animator.getAddDuration()); set.start(); animator.mAddAnimations.add(holder); }
private void animatePhotoLike(final CellFeedViewHolder holder) { if (!likeAnimations.containsKey(holder)) { holder.vBgLike.setVisibility(View.VISIBLE); holder.ivLike.setVisibility(View.VISIBLE); holder.vBgLike.setScaleY(0.1f); holder.vBgLike.setScaleX(0.1f); holder.vBgLike.setAlpha(1f); holder.ivLike.setScaleY(0.1f); holder.ivLike.setScaleX(0.1f); AnimatorSet animatorSet = new AnimatorSet(); likeAnimations.put(holder, animatorSet); ObjectAnimator bgScaleYAnim = ObjectAnimator.ofFloat(holder.vBgLike, "scaleY", 0.1f, 1f); bgScaleYAnim.setDuration(200); bgScaleYAnim.setInterpolator(DECCELERATE_INTERPOLATOR); ObjectAnimator bgScaleXAnim = ObjectAnimator.ofFloat(holder.vBgLike, "scaleX", 0.1f, 1f); bgScaleXAnim.setDuration(200); bgScaleXAnim.setInterpolator(DECCELERATE_INTERPOLATOR); ObjectAnimator bgAlphaAnim = ObjectAnimator.ofFloat(holder.vBgLike, "alpha", 1f, 0f); bgAlphaAnim.setDuration(200); bgAlphaAnim.setStartDelay(150); bgAlphaAnim.setInterpolator(DECCELERATE_INTERPOLATOR); ObjectAnimator imgScaleUpYAnim = ObjectAnimator.ofFloat(holder.ivLike, "scaleY", 0.1f, 1f); imgScaleUpYAnim.setDuration(300); imgScaleUpYAnim.setInterpolator(DECCELERATE_INTERPOLATOR); ObjectAnimator imgScaleUpXAnim = ObjectAnimator.ofFloat(holder.ivLike, "scaleX", 0.1f, 1f); imgScaleUpXAnim.setDuration(300); imgScaleUpXAnim.setInterpolator(DECCELERATE_INTERPOLATOR); ObjectAnimator imgScaleDownYAnim = ObjectAnimator.ofFloat(holder.ivLike, "scaleY", 1f, 0f); imgScaleDownYAnim.setDuration(300); imgScaleDownYAnim.setInterpolator(ACCELERATE_INTERPOLATOR); ObjectAnimator imgScaleDownXAnim = ObjectAnimator.ofFloat(holder.ivLike, "scaleX", 1f, 0f); imgScaleDownXAnim.setDuration(300); imgScaleDownXAnim.setInterpolator(ACCELERATE_INTERPOLATOR); animatorSet.playTogether( bgScaleYAnim, bgScaleXAnim, bgAlphaAnim, imgScaleUpYAnim, imgScaleUpXAnim); animatorSet.play(imgScaleDownYAnim).with(imgScaleDownXAnim).after(imgScaleUpYAnim); animatorSet.addListener( new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { resetLikeAnimationState(holder); } }); animatorSet.start(); } }
public void startAnimation() { if (animationEnabled) { if (windowAnimatorSet != null) { return; } ActionBarPopupWindowLayout content = (ActionBarPopupWindowLayout) getContentView(); content.setTranslationY(0); content.setAlpha(1.0f); content.setPivotX(content.getMeasuredWidth()); content.setPivotY(0); int count = content.getItemsCount(); content.positions.clear(); int visibleCount = 0; for (int a = 0; a < count; a++) { View child = content.getItemAt(a); if (child.getVisibility() != View.VISIBLE) { continue; } content.positions.put(child, visibleCount); child.setAlpha(0.0f); visibleCount++; } if (content.showedFromBotton) { content.lastStartedChild = count - 1; } else { content.lastStartedChild = 0; } windowAnimatorSet = new AnimatorSet(); windowAnimatorSet.playTogether( ObjectAnimator.ofFloat(content, "backScaleY", 0.0f, 1.0f), ObjectAnimator.ofInt(content, "backAlpha", 0, 255)); windowAnimatorSet.setDuration(150 + 16 * visibleCount); windowAnimatorSet.addListener( new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) {} @Override public void onAnimationEnd(Animator animation) { windowAnimatorSet = null; } @Override public void onAnimationCancel(Animator animation) { onAnimationEnd(animation); } @Override public void onAnimationRepeat(Animator animation) {} }); windowAnimatorSet.start(); } }
@SuppressLint("NewApi") public void onRevealAnimationProgress(boolean open, float radius, int x, int y) { if (!open) { return; } int count = Build.VERSION.SDK_INT <= 19 ? 11 : 8; for (int a = 0; a < count; a++) { if (views[a].getTag(R.string.AppName) == null) { if (distCache[a] == 0) { int buttonX = views[a].getLeft() + views[a].getMeasuredWidth() / 2; int buttonY = views[a].getTop() + views[a].getMeasuredHeight() / 2; distCache[a] = (float) Math.sqrt((x - buttonX) * (x - buttonX) + (y - buttonY) * (y - buttonY)); float vecX = (x - buttonX) / distCache[a]; float vecY = (y - buttonY) / distCache[a]; views[a].setPivotX(views[a].getMeasuredWidth() / 2 + vecX * AndroidUtilities.dp(20)); views[a].setPivotY(views[a].getMeasuredHeight() / 2 + vecY * AndroidUtilities.dp(20)); } if (distCache[a] > radius + AndroidUtilities.dp(27)) { continue; } views[a].setTag(R.string.AppName, 1); final ArrayList<Animator> animators = new ArrayList<>(); final ArrayList<Animator> animators2 = new ArrayList<>(); if (a < 8) { animators.add(ObjectAnimator.ofFloat(views[a], "scaleX", 0.7f, 1.05f)); animators.add(ObjectAnimator.ofFloat(views[a], "scaleY", 0.7f, 1.05f)); animators2.add(ObjectAnimator.ofFloat(views[a], "scaleX", 1.0f)); animators2.add(ObjectAnimator.ofFloat(views[a], "scaleY", 1.0f)); } if (Build.VERSION.SDK_INT <= 19) { animators.add(ObjectAnimator.ofFloat(views[a], "alpha", 1.0f)); } AnimatorSet animatorSet = new AnimatorSet(); animatorSet.playTogether(animators); animatorSet.setDuration(150); animatorSet.setInterpolator(decelerateInterpolator); animatorSet.addListener( new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { AnimatorSet animatorSet = new AnimatorSet(); animatorSet.playTogether(animators2); animatorSet.setDuration(100); animatorSet.setInterpolator(decelerateInterpolator); animatorSet.start(); } }); animatorSet.start(); } } }
@Override public AnimatorSet createAnimatorSet() { ViewHelper.setClipChildren(targetView, false); AnimatorSet rotationSet = new AnimatorSet(); rotationSet.play( ObjectAnimator.ofFloat(targetView, View.ROTATION, targetView.getRotation() + degrees)); rotationSet.setInterpolator(interpolator); rotationSet.setDuration(duration); if (listener != null) { rotationSet.addListener(listener); } return rotationSet; }
@SuppressWarnings("ConstantConditions") private void animateOut() { AnimatorSet set = new AnimatorSet(); set.playTogether( ObjectAnimator.ofFloat(text, "x", xText), ObjectAnimator.ofFloat(image, "x", xImage)); set.addListener( new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { ActivityTransitionAnimation2.super.onBackPressed(); overridePendingTransition(0, 0); } }); set.start(); }
public void dismiss(boolean animated) { setFocusable(false); if (animationEnabled && animated) { if (windowAnimatorSet != null) { windowAnimatorSet.cancel(); } ActionBarPopupWindowLayout content = (ActionBarPopupWindowLayout) getContentView(); windowAnimatorSet = new AnimatorSet(); windowAnimatorSet.playTogether( ObjectAnimator.ofFloat( content, "translationY", AndroidUtilities.dp(content.showedFromBotton ? 5 : -5)), ObjectAnimator.ofFloat(content, "alpha", 0.0f)); windowAnimatorSet.setDuration(150); windowAnimatorSet.addListener( new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) {} @Override public void onAnimationEnd(Animator animation) { windowAnimatorSet = null; setFocusable(false); try { ActionBarPopupWindow.super.dismiss(); } catch (Exception e) { // don't promt } unregisterListener(); } @Override public void onAnimationCancel(Animator animation) { onAnimationEnd(animation); } @Override public void onAnimationRepeat(Animator animation) {} }); windowAnimatorSet.start(); } else { try { super.dismiss(); } catch (Exception e) { // don't promt } unregisterListener(); } }
/** 上抛 */ public void upThrow() { ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(shapeLoadingView, "translationY", mDistance, 0); ObjectAnimator scaleIndication = ObjectAnimator.ofFloat(indicationIm, "scaleX", 0.2f, 1); ObjectAnimator objectAnimator1 = null; switch (shapeLoadingView.getShape()) { case SHAPE_RECT: objectAnimator1 = ObjectAnimator.ofFloat(shapeLoadingView, "rotation", 0, -120); break; case SHAPE_CIRCLE: objectAnimator1 = ObjectAnimator.ofFloat(shapeLoadingView, "rotation", 0, 180); break; case SHAPE_TRIANGLE: objectAnimator1 = ObjectAnimator.ofFloat(shapeLoadingView, "rotation", 0, 180); break; } objectAnimator.setDuration(ANIMATION_DURATION); objectAnimator1.setDuration(ANIMATION_DURATION); objectAnimator.setInterpolator(new DecelerateInterpolator()); objectAnimator1.setInterpolator(new DecelerateInterpolator()); AnimatorSet animatorSet = new AnimatorSet(); animatorSet.setDuration(ANIMATION_DURATION); animatorSet.playTogether(objectAnimator, objectAnimator1, scaleIndication); animatorSet.addListener( new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) {} @Override public void onAnimationEnd(Animator animation) { freeFall(); } @Override public void onAnimationCancel(Animator animation) {} @Override public void onAnimationRepeat(Animator animation) {} }); animatorSet.start(); }
public void callBackNewTabAnim() { // mApplication.setmThumbnailPosition(mBuilder.mCurrentConfigPosition); int endPosition = mBuilder.getList().size() - 1; Browser application = (Browser) mActivity.getApplication(); int startPosition = application.getmThumbnailPosition(); if (startPosition < 0 || startPosition >= mBuilder.getList().size()) startPosition = 0; AnimatorSet moveAnim = null; int width = getWidth(); int animTime = getResources().getInteger(R.integer.config_shortAnimTime); if (endPosition == startPosition) { mUi.openNewTab(); } else { ObjectAnimator oTran; ArrayList<Animator> animList = new ArrayList<Animator>(); for (int i = startPosition; i <= endPosition; i++) { if (i != endPosition) { oTran = ObjectAnimator.ofFloat( mBuilder.getList().get(i), "translationX", 0, -(i - startPosition + 1) * width); oTran.setStartDelay(DELAYTIME * (i - startPosition)); oTran.setDuration(animTime * (i - startPosition + 1)); } else { oTran = ObjectAnimator.ofFloat( mBuilder.getList().get(i), "translationX", 0, -(endPosition - startPosition) * width); oTran.setStartDelay(DELAYTIME * (endPosition - startPosition)); oTran.setDuration(animTime * (endPosition - startPosition)); } animList.add(oTran); } moveAnim = new AnimatorSet(); moveAnim.playTogether(animList); moveAnim.addListener( new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { mUi.openNewTab(); reverse(animation, 0); super.onAnimationEnd(animation); } }); moveAnim.start(); } }
@SuppressLint("NewApi") private void onDialogDismiss() { if (animatorSetForDialogDismiss.isRunning()) { return; } if (animatorSetForDialogDismiss != null && objectAnimatorsForDialogDismiss != null && objectAnimatorsForDialogDismiss.size() > 0) { animatorSetForDialogDismiss.playTogether(objectAnimatorsForDialogDismiss); animatorSetForDialogDismiss.start(); animatorSetForDialogDismiss.addListener( new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) {} @Override public void onAnimationEnd(Animator animation) { // 这里有可能会有bug,当Dialog所依赖的Activity关闭的时候,如果这个时候,用户关闭对话框,由于对话框的动画关闭需要时间,当动画执行完毕后,对话框所依赖的Activity已经被销毁了,执行dismiss()就会报错 if (context != null && context instanceof Activity) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { if (!((Activity) context).isDestroyed()) { dialog.dismiss(); } } else { try { dialog.dismiss(); } catch (final IllegalArgumentException e) { } catch (final Exception e) { } finally { dialog = null; } } } } @Override public void onAnimationCancel(Animator animation) {} @Override public void onAnimationRepeat(Animator animation) {} }); } else { dialog.dismiss(); } }
/** * item的交换动画效果 * * @param oldPosition * @param newPosition */ private void animateReorder(final int oldPosition, final int newPosition) { boolean isForward = newPosition > oldPosition; List<Animator> resultList = new LinkedList<Animator>(); if (isForward) { for (int pos = oldPosition; pos < newPosition; pos++) { View view = getChildAt(pos - getFirstVisiblePosition()); System.out.println(pos); if ((pos + 1) % getNumColumns() == 0) { resultList.add( createTranslationAnimations( view, -view.getWidth() * (getNumColumns() - 1), 0, view.getHeight(), 0)); } else { resultList.add(createTranslationAnimations(view, view.getWidth(), 0, 0, 0)); } } } else { for (int pos = oldPosition; pos > newPosition; pos--) { View view = getChildAt(pos - getFirstVisiblePosition()); if ((pos + getNumColumns()) % getNumColumns() == 0) { resultList.add( createTranslationAnimations( view, view.getWidth() * (getNumColumns() - 1), 0, -view.getHeight(), 0)); } else { resultList.add(createTranslationAnimations(view, -view.getWidth(), 0, 0, 0)); } } } AnimatorSet resultSet = new AnimatorSet(); resultSet.playTogether(resultList); resultSet.setDuration(300); resultSet.setInterpolator(new AccelerateDecelerateInterpolator()); resultSet.addListener( new AnimatorListenerAdapter() { @Override public void onAnimationStart(Animator animation) { mAnimationEnd = false; } @Override public void onAnimationEnd(Animator animation) { mAnimationEnd = true; } }); resultSet.start(); }
private void updateHeartButton(final CellFeedViewHolder holder, boolean animated) { if (animated) { if (!likeAnimations.containsKey(holder)) { AnimatorSet animatorSet = new AnimatorSet(); likeAnimations.put(holder, animatorSet); ObjectAnimator rotationAnim = ObjectAnimator.ofFloat(holder.btnLike, "rotation", 0f, 360f); rotationAnim.setDuration(300); rotationAnim.setInterpolator(ACCELERATE_INTERPOLATOR); ObjectAnimator bounceAnimX = ObjectAnimator.ofFloat(holder.btnLike, "scaleX", 0.2f, 1f); bounceAnimX.setDuration(300); bounceAnimX.setInterpolator(OVERSHOOT_INTERPOLATOR); ObjectAnimator bounceAnimY = ObjectAnimator.ofFloat(holder.btnLike, "scaleY", 0.2f, 1f); bounceAnimY.setDuration(300); bounceAnimY.setInterpolator(OVERSHOOT_INTERPOLATOR); bounceAnimY.addListener( new AnimatorListenerAdapter() { @Override public void onAnimationStart(Animator animation) { holder.btnLike.setImageResource(R.drawable.ic_heart_red); } }); animatorSet.play(rotationAnim); animatorSet.play(bounceAnimX).with(bounceAnimY).after(rotationAnim); animatorSet.addListener( new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { resetLikeAnimationState(holder); } }); animatorSet.start(); } } else { if (likedPositions.contains(holder.getPosition())) { holder.btnLike.setImageResource(R.drawable.ic_heart_red); } else { holder.btnLike.setImageResource(R.drawable.ic_heart_outline_grey); } } }
@Override public Animator onCreateAnimator(int transit, boolean enter, int nextAnim) { if (enter) { AnimatorSet up = (AnimatorSet) AnimatorInflater.loadAnimator(getActivity(), R.animator.slide_up); up.addListener( new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { setOnRiseListener(); } }); return up; } else { return AnimatorInflater.loadAnimator(getActivity(), R.animator.slide_down); } }