首页>代码>安卓字体水波文字特效>/水波纹字体/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();
		}
	}
}
最近下载更多
511076827  LV33 2022年4月10日
jsjdbdjdj  LV1 2020年10月8日
panghuqiu  LV1 2019年9月2日
lyh970304  LV3 2019年6月26日
wjh1234  LV2 2019年6月12日
谭鬼鬼  LV48 2018年11月12日
今夜蓝颜晓梦2  LV8 2018年5月21日
96Jimmy  LV1 2017年9月9日
way110  LV2 2017年6月28日
404727775  LV1 2017年1月6日
最近浏览更多
qazwer11  LV5 2023年5月22日
LITIANYU084414  LV11 2023年1月13日
张恺祺  LV6 2022年5月21日
bingpine  LV6 2022年5月10日
511076827  LV33 2022年4月10日
王杰123456  LV1 2022年3月17日
969334274  LV1 2021年12月14日
傅先生  LV1 2021年6月17日
qddx2016203525  LV6 2021年6月9日
懒懒的小胖  LV1 2021年5月29日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友