package com.znv.linkup.view;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.animation.Animator;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import com.znv.linkup.R;
/**
* 游戏标题,包括动画
*
* @author yzb
*
*/
public class GameTitle extends LinearLayout implements Animator.AnimatorListener {
private static LayoutParams params = null;
private AnimatorSet animation = null;
public GameTitle(Context context, AttributeSet attrs) {
super(context, attrs);
addWords(context);
}
static {
params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.setMargins(0, 20, 0, 20);
}
/**
* 增加游戏标题文字图片
*
* @param context
*/
private void addWords(Context context) {
ImageView ivXiu = new ImageView(context);
ivXiu.setLayoutParams(params);
ivXiu.setBackgroundResource(R.drawable.xiu);
this.addView(ivXiu);
ImageView ivXian = new ImageView(context);
ivXian.setLayoutParams(params);
ivXian.setBackgroundResource(R.drawable.xian);
this.addView(ivXian);
ImageView ivLian1 = new ImageView(context);
ivLian1.setLayoutParams(params);
ivLian1.setBackgroundResource(R.drawable.lian);
this.addView(ivLian1);
ImageView ivLian2 = new ImageView(context);
ivLian2.setLayoutParams(params);
ivLian2.setBackgroundResource(R.drawable.lian);
this.addView(ivLian2);
ImageView ivKan = new ImageView(context);
ivKan.setLayoutParams(params);
ivKan.setBackgroundResource(R.drawable.kan);
this.addView(ivKan);
}
/**
* 创建动画
*/
private void createAnimation() {
if (animation == null) {
List<Animator> appear = new ArrayList<Animator>();
for (int i = 0; i < 5; i++) {
ObjectAnimator anim = ObjectAnimator.ofFloat(this.getChildAt(i), "translationX", i * -120, 0);
anim.setDuration(1000);
ObjectAnimator anim2 = ObjectAnimator.ofFloat(this.getChildAt(i), "alpha", 0f, 1f);
anim2.setDuration(1000);
AnimatorSet as = new AnimatorSet();
as.playTogether(anim, anim2);
appear.add(as);
}
AnimatorSet s1 = new AnimatorSet();
s1.playSequentially(appear);
List<Animator> disappear = new ArrayList<Animator>();
for (int i = 0; i < 5; i++) {
ObjectAnimator anim = ObjectAnimator.ofFloat(this.getChildAt(i), "alpha", 1f, 0.4f);
anim.setDuration(1800);
ObjectAnimator anim2 = ObjectAnimator.ofFloat(this.getChildAt(i), "alpha", 0.4f, 0f);
anim2.setDuration(200);
AnimatorSet as = new AnimatorSet();
as.playSequentially(anim, anim2);
disappear.add(as);
}
AnimatorSet s2 = new AnimatorSet();
s2.playTogether(disappear);
List<Animator> always = new ArrayList<Animator>();
for (int i = 0; i < 5; i++) {
ObjectAnimator anim = ObjectAnimator.ofFloat(this.getChildAt(i), "translationX", 0, 0);
anim.setDuration(3000);
ObjectAnimator anim2 = ObjectAnimator.ofFloat(this.getChildAt(i), "alpha", 1f, 0.9f, 1f);
anim2.setDuration(3000);
AnimatorSet as = new AnimatorSet();
as.playTogether(anim, anim2);
always.add(as);
}
AnimatorSet s3 = new AnimatorSet();
s3.playTogether(always);
animation = new AnimatorSet();
animation.playSequentially(s3, s2, s1);
}
}
public void startAnimation() {
createAnimation();
animation.addListener(this);
animation.start();
}
public void stopAnimation() {
if (animation != null) {
animation.removeAllListeners();
animation.end();
}
}
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
if (animation instanceof AnimatorSet) {
startAnimation();
}
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
}