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: 674023920@qq.com * @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>
- packagecom.Aina.Android;
- importandroid.content.Context;
- importandroid.graphics.Bitmap;
- importandroid.graphics.Canvas;
- importandroid.graphics.Paint;
- importandroid.graphics.drawable.BitmapDrawable;
- importandroid.view.KeyEvent;
- importandroid.view.View;
- importandroid.view.animation.AlphaAnimation;
- importandroid.view.animation.Animation;
- importandroid.view.animation.RotateAnimation;
- importandroid.view.animation.ScaleAnimation;
- importandroid.view.animation.TranslateAnimation;
- /**
- *com.Aina.AndroidPro_AnimationTween
- *
- *@authorAina.huangE-mail:674023920@qq.com
- *@version创建时间:2010Jun17,20105:15:36PM类说明
- */
- publicclassGameViewextendsView{
- privatePaintmPaint=null;
- privateAnimationmAlphaAnimation=null;
- privateAnimationmScaleAnimation=null;
- privateAnimationmTranslateAnimation=null;
- privateAnimationmRotateAnimation=null;
- privateBitmapmBitmap=null;
- publicGameView(Contextcontext){
- super(context);
- mBitmap=((BitmapDrawable)this.getResources().getDrawable(
- R.drawable.img)).getBitmap();
- }
- @Override
- protectedvoidonDraw(Canvascanvas){
- super.onDraw(canvas);
- mPaint=newPaint();
- mPaint.setAntiAlias(true);
- canvas.drawBitmap(mBitmap,0,0,mPaint);
- }
- publicbooleanonKeyDown(intkeyCode,KeyEventevent){
- switch(keyCode){
- caseKeyEvent.KEYCODE_DPAD_UP:
- mAlphaAnimation=newAlphaAnimation(0.1f,1.0f);//透明度
- mAlphaAnimation.setDuration(3000);
- this.startAnimation(mAlphaAnimation);
- break;
- caseKeyEvent.KEYCODE_DPAD_DOWN:
- mScaleAnimation=newScaleAnimation(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;
- caseKeyEvent.KEYCODE_DPAD_LEFT:
- mTranslateAnimation=newTranslateAnimation(0,100,0,100);//移动
- mTranslateAnimation.setDuration(2000);
- this.startAnimation(mTranslateAnimation);
- break;
- caseKeyEvent.KEYCODE_DPAD_RIGHT:
- mRotateAnimation=newRotateAnimation(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;
- }
- returnsuper.onKeyDown(keyCode,event);
- }
- }
- packagecom.Aina.Android;
- importandroid.app.Activity;
- importandroid.os.Bundle;
- importandroid.view.KeyEvent;
- publicclassTest_AnimationTweenextendsActivity{
- /**Calledwhentheactivityisfirstcreated.*/
- privateGameViewgv=null;
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- gv=newGameView(this);
- this.setContentView(gv);
- }
- @Override
- publicbooleanonKeyDown(intkeyCode,KeyEventevent){
- returngv.onKeyDown(keyCode,event);
- }
- }
2.通过xml布局实现:
- <?xmlversion="1.0"encoding="utf-8"?>
- <setxmlns:android="http://schemas.android.com/apk/res/android">
- <alphaandroid:fromAlpha="0.1"android:toAlpha="1.0"
- android:duration="3000">
- </alpha>
- </set>
- <?xmlversion="1.0"encoding="utf-8"?>
- <setxmlns:android="http://schemas.android.com/apk/res/android">
- <scaleandroid: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>
- <?xmlversion="1.0"encoding="utf-8"?>
- <setxmlns:android="http://schemas.android.com/apk/res/android">
- <translateandroid:fromXDelta="0"android:toXDelta="100"
- android:fromYDelta="0"android:toYDelta="100"android:duration="3000">
- </translate>
- </set>
- <?xmlversion="1.0"encoding="utf-8"?>
- <setxmlns: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>
- packagecom.Aina.Android;
- importandroid.content.Context;
- importandroid.graphics.Bitmap;
- importandroid.graphics.Canvas;
- importandroid.graphics.Paint;
- importandroid.graphics.drawable.BitmapDrawable;
- importandroid.view.KeyEvent;
- importandroid.view.View;
- importandroid.view.animation.AlphaAnimation;
- importandroid.view.animation.Animation;
- importandroid.view.animation.AnimationUtils;
- importandroid.view.animation.RotateAnimation;
- importandroid.view.animation.ScaleAnimation;
- importandroid.view.animation.TranslateAnimation;
- /**
- *com.Aina.AndroidPro_AnimationTween
- *
- *@authorAina.huangE-mail:674023920@qq.com
- *@version创建时间:2010Jun17,20105:15:36PM类说明
- */
- publicclassGameViewextendsView{
- privatePaintmPaint=null;
- privateAnimationmAlphaAnimation=null;
- privateAnimationmScaleAnimation=null;
- privateAnimationmTranslateAnimation=null;
- privateAnimationmRotateAnimation=null;
- privateBitmapmBitmap=null;
- privateContextmContext=null;
- publicGameView(Contextcontext){
- super(context);
- mContext=context;
- mBitmap=((BitmapDrawable)this.getResources().getDrawable(
- R.drawable.img)).getBitmap();
- }
- @Override
- protectedvoidonDraw(Canvascanvas){
- super.onDraw(canvas);
- mPaint=newPaint();
- mPaint.setAntiAlias(true);
- canvas.drawBitmap(mBitmap,0,0,mPaint);
- }
- publicbooleanonKeyDown(intkeyCode,KeyEventevent){
- switch(keyCode){
- caseKeyEvent.KEYCODE_DPAD_UP:
- //mAlphaAnimation=newAlphaAnimation(0.1f,1.0f);//透明度
- //mAlphaAnimation.setDuration(3000);
- mAlphaAnimation=AnimationUtils.loadAnimation(mContext,R.anim.alpha);
- this.startAnimation(mAlphaAnimation);
- break;
- caseKeyEvent.KEYCODE_DPAD_DOWN:
- //mScaleAnimation=newScaleAnimation(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;
- caseKeyEvent.KEYCODE_DPAD_LEFT:
- //mTranslateAnimation=newTranslateAnimation(0,100,0,100);//移动
- //mTranslateAnimation.setDuration(2000);
- mTranslateAnimation=AnimationUtils.loadAnimation(mContext,R.anim.translate);
- this.startAnimation(mTranslateAnimation);
- break;
- caseKeyEvent.KEYCODE_DPAD_RIGHT:
- //mRotateAnimation=newRotateAnimation(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;
- }
- returnsuper.onKeyDown(keyCode,event);
- }
- }