package com.cheng.animationstudy.customview; import android.content.Context; import android.graphics.Canvas; import android.graphics.drawable.BitmapDrawable; import android.util.AttributeSet; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; import android.view.animation.AlphaAnimation; import android.view.animation.Animation; import android.view.animation.AnimationSet; import android.view.animation.RotateAnimation; import android.view.animation.ScaleAnimation; import android.view.animation.TranslateAnimation; import com.cheng.animationstudy.C; import com.cheng.animationstudy.R; import com.cheng.utils.Logger; /** * 自定义用于演示Tween动画的View */ public class TweenAnimView extends View { private static final String TAG = "TweenAnimView"; // Alpha动画 - 透明度渐变动画 private Animation mAlphaAnimation = null; // Scale动画 - 缩放动画 private Animation mScaleAnimation = null; // Translate动画 - 位移动画 private Animation mTranslateAnimation = null; // Rotate动画 - 旋转动画 private Animation mRotateAnimation = null; public TweenAnimView(Context context) { super(context); } public TweenAnimView(Context context, AttributeSet attributeSet) { super(context, attributeSet); Logger.TAG = TAG; } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Logger.i("onDraw"); // 加载一个图片 canvas.drawBitmap(((BitmapDrawable)getResources().getDrawable(R.mipmap.sdd_simple)).getBitmap(), 0, 0, null); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { Logger.e("onKeyDown"); return true; } @Override public boolean onKeyUp(int keyCode, KeyEvent event) { Logger.e("onKeyUp"); switch (keyCode) { case KeyEvent.KEYCODE_DPAD_UP: Logger.e("onKeyDown - KEYCODE_DPAD_UP"); mAlphaAnimation = new AlphaAnimation(0.1f, 1.0f); mAlphaAnimation.setDuration(C.Int.ANIM_DURATION * 2); this.startAnimation(mAlphaAnimation); break; case KeyEvent.KEYCODE_DPAD_DOWN: Logger.e("onKeyDown - KEYCODE_DPAD_DOWN"); mRotateAnimation = new RotateAnimation(0f, 360f); mRotateAnimation.setDuration(C.Int.ANIM_DURATION * 2); this.startAnimation(mRotateAnimation); break; case KeyEvent.KEYCODE_DPAD_LEFT: Logger.e("onKeyDown - KEYCODE_DPAD_LEFT"); mScaleAnimation = new ScaleAnimation(0.1f, 1.0f, 0.1f, 1.0f); mScaleAnimation.setDuration(C.Int.ANIM_DURATION * 2); this.startAnimation(mScaleAnimation); break; case KeyEvent.KEYCODE_DPAD_RIGHT: Logger.e("onKeyDown - KEYCODE_DPAD_RIGHT"); mTranslateAnimation = new TranslateAnimation(0.1f, 100.0f, 0.1f, 100.0f); mTranslateAnimation.setDuration(C.Int.ANIM_DURATION * 2); this.startAnimation(mTranslateAnimation); break; case KeyEvent.KEYCODE_DPAD_CENTER: Logger.e("onKeyDown - KEYCODE_DPAD_CENTER"); mTranslateAnimation = new TranslateAnimation(0.1f, 200.0f, 0.1f, 200.0f); mAlphaAnimation = new AlphaAnimation(0.1f, 1.0f); AnimationSet set = new AnimationSet(true); set.setDuration(C.Int.ANIM_DURATION * 2); this.startAnimation(set); break; } return true; } }