首页>分享>安卓字体水波文字特效>/水波纹字体/src/com/example/acsdff/Titanic.java
package com.example.acsdff;

import android.animation.Animator;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.annotation.SuppressLint;
import android.os.Build;
import android.view.animation.LinearInterpolator;

/**
 * Titanic User: romainpiel Date: 14/03/2014 Time: 09:34
 */
public class Titanic {

	private AnimatorSet animatorSet;
	private Animator.AnimatorListener animatorListener;

	public Animator.AnimatorListener getAnimatorListener() {
		return animatorListener;
	}

	public void setAnimatorListener(Animator.AnimatorListener animatorListener) {
		this.animatorListener = animatorListener;
	}

	public void start(final TitanicTextView textView) {

		final Runnable animate = new Runnable() {
			@SuppressLint("NewApi")
			@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();
		}
	}

	public void cancel() {
		if (animatorSet != null) {
			animatorSet.cancel();
		}
	}
}
最近下载更多
panghuqiu LV12019年9月2日
星星
lyh970304 LV32019年6月26日
星星星星星星
wjh1234 LV22019年6月12日
星星星星
谭鬼鬼 LV482018年11月12日
太阳太阳太阳
今夜蓝颜晓梦2 LV82018年5月21日
月亮月亮
96Jimmy LV12017年9月9日
星星
way110 LV22017年6月28日
星星星星
404727775 LV12017年1月6日
星星
lanlianhua LV12016年9月2日
星星
Cobber LV22016年9月1日
星星星星
最近浏览更多
what_whnt LV16月12日
星星
暂无贡献等级
我超菜 LV25月24日
星星星星
twilight0428 LV23月6日
星星星星
ylz729729 LV22019年12月18日
星星星星
藤井旋风 LV42019年12月14日
月亮
1909974714 LV192019年12月12日
太阳星星星星星星
OIUYTQQ2542 LV22019年12月6日
星星星星
lyt1234567890 LV52019年12月4日
月亮星星
Alinga LV22019年11月22日
星星星星
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友