use of com.marshalchen.common.uimodule.nineoldandroids.animation.ObjectAnimator in project UltimateAndroid by cymcsg.
the class ScaleInAnimationAdapter method getAnimators.
@Override
public Animator[] getAnimators(final ViewGroup parent, final View view) {
ObjectAnimator scaleX = ObjectAnimator.ofFloat(view, SCALE_X, mScaleFrom, 1f);
ObjectAnimator scaleY = ObjectAnimator.ofFloat(view, SCALE_Y, mScaleFrom, 1f);
return new ObjectAnimator[] { scaleX, scaleY };
}
use of com.marshalchen.common.uimodule.nineoldandroids.animation.ObjectAnimator in project UltimateAndroid by cymcsg.
the class FilckerAnimationListView method animatePreLayout.
/**
* Animate items that are deleted entirely and items that move out of
* bounds.
*/
private void animatePreLayout(final float durationUnit, final Animator.AnimatorListener listener) {
final AnimatorSet animatorSet = new AnimatorSet();
final int firstVisiblePosition = getFirstVisiblePosition();
final int childCount = getChildCount();
for (final Iterator<Entry<Long, Float>> iter = yMap.entrySet().iterator(); iter.hasNext(); ) {
final Entry<Long, Float> entry = iter.next();
final long id = entry.getKey();
final int oldPos = positionMap.get(id);
final View child = getChildAt(oldPos - firstVisiblePosition);
final int newPos = getPositionForId(id);
// fade out items that disappear
if (newPos == -1) {
final ObjectAnimator anim = animateAlpha(child, false);
animatorSet.play(anim);
iter.remove();
positionMap.remove(id);
continue;
}
// translate items that move out of bounds
if (newPos < firstVisiblePosition || newPos > firstVisiblePosition + childCount) {
final float offset;
if (newPos < firstVisiblePosition) {
offset = -getHeight();
} else {
offset = getHeight();
}
final AnimatorProxy proxy = AnimatorProxy.wrap(child);
final ObjectAnimator anim = ObjectAnimator.ofFloat(proxy, "translationY", 0f, offset);
final int finalDuration = getDuration(0, getHeight() / 2, durationUnit);
anim.setInterpolator(new AccelerateInterpolator());
anim.setDuration((long) (finalDuration * animationDurationFactor));
animatorSet.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(final Animator animation) {
child.post(new Runnable() {
@Override
public void run() {
proxy.setTranslationY(0f);
}
});
}
});
animatorSet.play(anim);
iter.remove();
positionMap.remove(id);
continue;
}
}
if (!animatorSet.getChildAnimations().isEmpty()) {
animatorSet.addListener(listener);
animatorSet.start();
} else {
listener.onAnimationEnd(animatorSet);
}
}
use of com.marshalchen.common.uimodule.nineoldandroids.animation.ObjectAnimator in project UltimateAndroid by cymcsg.
the class FilckerAnimationListView method animatePostLayout.
/**
* Animate items that just appeared and items that move within the screen.
*/
private void animatePostLayout(final float durationUnit) {
final AnimatorSet animatorSet = new AnimatorSet();
for (int i = 0; i < getChildCount(); i++) {
final View child = getChildAt(i);
final long id = getItemIdAtPosition(getFirstVisiblePosition() + i);
ObjectAnimator anim = null;
ViewHelper.setAlpha(child, 1f);
if (yMap.containsKey(id)) {
// moved within visible area
// log("Moved within visible area id: " + id);
final float oldY = yMap.remove(id);
final float newY = ViewHelper.getY(child);
if (oldY != newY) {
anim = animateY(child, oldY, newY, durationUnit);
}
} else {
if (beforeVisible.contains(id)) {
// moved from top
final float newY = ViewHelper.getY(child);
final float oldY = -child.getHeight();
anim = animateY(child, oldY, newY, durationUnit);
} else if (afterVisible.contains(id)) {
// moved from bottom
final float newY = ViewHelper.getY(child);
final float oldY = getHeight();
anim = animateY(child, oldY, newY, durationUnit);
} else {
// entirely new
ViewHelper.setAlpha(child, 0f);
anim = animateAlpha(child, true);
anim.setStartDelay(MIN_ANIM_DURATION);
}
}
if (anim != null) {
animatorSet.play(anim);
}
}
animatorSet.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(final Animator animation) {
finishAnimation();
}
;
});
animatorSet.start();
}
use of com.marshalchen.common.uimodule.nineoldandroids.animation.ObjectAnimator in project UltimateAndroid by cymcsg.
the class FilckerAnimationListView method animateAlpha.
protected ObjectAnimator animateAlpha(final View view, final boolean fadeIn) {
final ObjectAnimator anim = ObjectAnimator.ofFloat(view, "alpha", fadeIn ? new float[] { 0f, 1f } : new float[] { 1f, 0f });
anim.setDuration((long) (ALPHA_ANIM_DURATION * animationDurationFactor));
return anim;
}
use of com.marshalchen.common.uimodule.nineoldandroids.animation.ObjectAnimator in project UltimateAndroid by cymcsg.
the class Titanic method start.
public void start(final TitanicTextView textView) {
final Runnable animate = new Runnable() {
@Override
public void run() {
textView.setSinking(true);
// horizontal animation. 200 = wave.png width
ObjectAnimator maskXAnimator = ObjectAnimator.ofFloat(textView, "maskX", 0, 200);
maskXAnimator.setRepeatCount(ValueAnimator.INFINITE);
maskXAnimator.setDuration(1000);
maskXAnimator.setStartDelay(0);
int h = textView.getHeight();
// vertical animation
// maskY = 0 -> wave vertically centered
// repeat mode REVERSE to go back and forth
ObjectAnimator maskYAnimator = ObjectAnimator.ofFloat(textView, "maskY", h / 2, -h / 2);
maskYAnimator.setRepeatCount(ValueAnimator.INFINITE);
maskYAnimator.setRepeatMode(ValueAnimator.REVERSE);
maskYAnimator.setDuration(10000);
maskYAnimator.setStartDelay(0);
// now play both animations together
animatorSet = new AnimatorSet();
animatorSet.playTogether(maskXAnimator, maskYAnimator);
animatorSet.setInterpolator(new LinearInterpolator());
animatorSet.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
textView.setSinking(false);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
textView.postInvalidate();
} else {
textView.postInvalidateOnAnimation();
}
animatorSet = null;
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
if (animatorListener != null) {
animatorSet.addListener(animatorListener);
}
animatorSet.start();
}
};
if (!textView.isSetUp()) {
textView.setAnimationSetupCallback(new TitanicTextView.AnimationSetupCallback() {
@Override
public void onSetupAnimation(final TitanicTextView target) {
animate.run();
}
});
} else {
animate.run();
}
}
Aggregations