Animation Tween动画可以通过java代码实现,也可以通过xml布局来实现
1.通过java代码实现:
?
package com.Aina.Android;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.drawable.BitmapDrawable;import android.view.KeyEvent;import android.view.View;import android.view.animation.AlphaAnimation;import android.view.animation.Animation;import android.view.animation.RotateAnimation;import android.view.animation.ScaleAnimation;import android.view.animation.TranslateAnimation;/** * com.Aina.Android Pro_AnimationTween * * @author Aina.huang E-mail: [email protected] * @version 创建时间:2010 Jun 17, 2010 5:15:36 PM 类说明 */public class GameView extends View { private Paint mPaint = null; private Animation mAlphaAnimation = null; private Animation mScaleAnimation = null; private Animation mTranslateAnimation = null; private Animation mRotateAnimation = null; private Bitmap mBitmap = null; public GameView(Context context) { super(context); mBitmap = ((BitmapDrawable) this.getResources().getDrawable( R.drawable.img)).getBitmap(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); mPaint = new Paint(); mPaint.setAntiAlias(true); canvas.drawBitmap(mBitmap, 0, 0, mPaint); } public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_DPAD_UP: mAlphaAnimation = new AlphaAnimation(0.1f, 1.0f);// 透明度 mAlphaAnimation.setDuration(3000); this.startAnimation(mAlphaAnimation); break; case KeyEvent.KEYCODE_DPAD_DOWN: mScaleAnimation = new ScaleAnimation(0.0f, 1.0f, 0.0f, 1.0f,// 整个屏幕就0.0到1.0的大小//缩放 Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.0f); mScaleAnimation.setDuration(3000); this.startAnimation(mScaleAnimation); break; case KeyEvent.KEYCODE_DPAD_LEFT: mTranslateAnimation = new TranslateAnimation(0, 100, 0, 100);// 移动 mTranslateAnimation.setDuration(2000); this.startAnimation(mTranslateAnimation); break; case KeyEvent.KEYCODE_DPAD_RIGHT: mRotateAnimation = new RotateAnimation(0.0f, 360.0f,//旋转 Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); mRotateAnimation.setDuration(3000); this.startAnimation(mRotateAnimation); break; default: break; } return super.onKeyDown(keyCode, event); }}package com.Aina.Android;import android.app.Activity;import android.os.Bundle;import android.view.KeyEvent;public class Test_AnimationTween extends Activity { /** Called when the activity is first created. */ private GameView gv = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); gv = new GameView(this); this.setContentView(gv); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { return gv.onKeyDown(keyCode, event); } }
?
?
2.通过xml布局实现:
?
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"> <alpha android:fromAlpha="0.1" android:toAlpha="1.0" android:duration="3000"> </alpha></set><?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"> <scale android:fromXScale="0.0" android:toXScale="1.0" android:fromYScale="0.0" android:toYScale="1.0" android:pivotX="50%" android:pivotY="50%" android:fillAfter="false" android:duration="3000"> </scale></set><?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0" android:toXDelta="100" android:fromYDelta="0" android:toYDelta="100" android:duration="3000"> </translate></set><?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"> <rotate android:interpolator="@android:anim/accelerate_decelerate_interpolator" android:fromDegrees="0" android:toDegrees="+360" android:pivotX="50%" android:pivotY="50%" android:duration="3000"> </rotate></set>?
package com.Aina.Android;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.drawable.BitmapDrawable;import android.view.KeyEvent;import android.view.View;import android.view.animation.AlphaAnimation;import android.view.animation.Animation;import android.view.animation.AnimationUtils;import android.view.animation.RotateAnimation;import android.view.animation.ScaleAnimation;import android.view.animation.TranslateAnimation;/** * com.Aina.Android Pro_AnimationTween * * @author Aina.huang E-mail: [email protected] * @version 创建时间:2010 Jun 17, 2010 5:15:36 PM 类说明 */public class GameView extends View { private Paint mPaint = null; private Animation mAlphaAnimation = null; private Animation mScaleAnimation = null; private Animation mTranslateAnimation = null; private Animation mRotateAnimation = null; private Bitmap mBitmap = null; private Context mContext = null; public GameView(Context context) { super(context); mContext = context; mBitmap = ((BitmapDrawable) this.getResources().getDrawable( R.drawable.img)).getBitmap(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); mPaint = new Paint(); mPaint.setAntiAlias(true); canvas.drawBitmap(mBitmap, 0, 0, mPaint); } public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_DPAD_UP:// mAlphaAnimation = new AlphaAnimation(0.1f, 1.0f);// 透明度// mAlphaAnimation.setDuration(3000); mAlphaAnimation = AnimationUtils.loadAnimation(mContext, R.anim.alpha); this.startAnimation(mAlphaAnimation); break; case KeyEvent.KEYCODE_DPAD_DOWN:// mScaleAnimation = new ScaleAnimation(0.0f, 1.0f, 0.0f,// 1.0f,// 整个屏幕就0.0到1.0的大小//缩放// Animation.RELATIVE_TO_SELF, 0.5f,// Animation.RELATIVE_TO_SELF, 0.0f);// mScaleAnimation.setDuration(3000); mScaleAnimation = AnimationUtils.loadAnimation(mContext, R.anim.scale); this.startAnimation(mScaleAnimation); break; case KeyEvent.KEYCODE_DPAD_LEFT:// mTranslateAnimation = new TranslateAnimation(0, 100, 0, 100);// 移动// mTranslateAnimation.setDuration(2000); mTranslateAnimation = AnimationUtils.loadAnimation(mContext, R.anim.translate); this.startAnimation(mTranslateAnimation); break; case KeyEvent.KEYCODE_DPAD_RIGHT:// mRotateAnimation = new RotateAnimation(0.0f, 360.0f,//旋转// Animation.RELATIVE_TO_SELF, 0.5f,// Animation.RELATIVE_TO_SELF, 0.5f); // mRotateAnimation.setDuration(3000); mRotateAnimation = AnimationUtils.loadAnimation(mContext, R.anim.rotate); this.startAnimation(mRotateAnimation); break; default: break; } return super.onKeyDown(keyCode, event); }}?
?
?
?
?