coding
首页>分享>安卓字体水波文字特效>/水波纹字体/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 LV19月2日
星星
lyh970304 LV36月26日
星星星星星星
wjh1234 LV26月12日
星星星星
谭鬼鬼 LV462018年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日
星星星星
最近浏览更多
最麦兜 LV710月24日
月亮星星星星星星
KG_breeze9月26日
暂无贡献等级
panghuqiu LV19月2日
星星
献出我的心脏 LV27月1日
星星星星
lyh970304 LV36月26日
星星星星星星
17744058 LV16月25日
星星
你好hghg6月21日
暂无贡献等级
xiaobaigggggg LV56月20日
月亮星星
金前进 LV26月19日
星星星星
444699569 LV26月18日
星星星星
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友