use of com.marshalchen.common.uimodule.nineoldandroids.animation.AnimatorSet 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.AnimatorSet 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.AnimatorSet 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();
}
}
use of com.marshalchen.common.uimodule.nineoldandroids.animation.AnimatorSet in project UltimateAndroid by cymcsg.
the class EasingActivity method onCreate.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.easing_activity_my);
mEasingList = (ListView) findViewById(R.id.easing_list);
mAdapter = new EasingAdapter(this);
mEasingList.setAdapter(mAdapter);
mTarget = findViewById(R.id.target);
mHistory = (DrawView) findViewById(R.id.history);
mEasingList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
mHistory.clear();
Skill s = (Skill) view.getTag();
AnimatorSet set = new AnimatorSet();
mTarget.setTranslationX(0);
mTarget.setTranslationY(0);
set.playTogether(Glider.glide(s, 1200, ObjectAnimator.ofFloat(mTarget, "translationY", 0, dipToPixels(EasingActivity.this, -(160 - 3))), new BaseEasingMethod.EasingListener() {
@Override
public void on(float time, float value, float start, float end, float duration) {
mHistory.drawPoint(time, duration, value - dipToPixels(EasingActivity.this, 60));
}
}));
set.setDuration(1200);
set.start();
}
});
}
use of com.marshalchen.common.uimodule.nineoldandroids.animation.AnimatorSet in project UltimateAndroid by cymcsg.
the class BlurLayout method startBlurImageAppearAnimator.
private void startBlurImageAppearAnimator() {
if (!enableBlurBackground || mBlurImage == null)
return;
AnimatorSet set = new AnimatorSet();
if (enableBackgroundZoom) {
set.playTogether(ObjectAnimator.ofFloat(mBlurImage, "alpha", 0.8f, 1f), ObjectAnimator.ofFloat(mBlurImage, "scaleX", 1f, mZoomRatio), ObjectAnimator.ofFloat(mBlurImage, "scaleY", 1f, mZoomRatio));
} else {
set.playTogether(ObjectAnimator.ofFloat(mBlurImage, "alpha", 0f, 1f));
}
set.addListener(mGlobalListener);
set.addListener(mGlobalAppearingAnimators);
set.setDuration(mBlurDuration);
set.start();
}
Aggregations