首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

android 兑现3d旋转

2012-08-21 
android 实现3d旋转通过继承Animation动画类 ?封装了一个3d旋转的效果代码如下import android.graphics.Ca

android 实现3d旋转

通过继承Animation动画类 ?封装了一个3d旋转的效果代码如下


import android.graphics.Camera;import android.graphics.Matrix;import android.view.animation.Animation;import android.view.animation.Transformation;public class Rotatw3d extends Animation{private float mFromDegree;private float mToDegree;private float mCenterX;private float mcenterY;private float mleft;private float mTop;private Camera mCamera;private static final String TAG="Rotate3d";public Rotatw3d(float mFromDegree, float mToDegree, float mCenterX,float mcenterY, float mleft, float mTop){this.mFromDegree = mFromDegree;this.mToDegree = mToDegree;this.mCenterX = mCenterX;this.mcenterY = mcenterY;this.mleft = mleft;this.mTop = mTop;}@Overridepublic void initialize(int width, int height, int parentWidth,int parentHeight){super.initialize(width, height, parentWidth, parentHeight);mCamera=new Camera();}@Overrideprotected void applyTransformation(float interpolatedTime, Transformation t){final float FromDegree =mFromDegree;float degrees=FromDegree+(mToDegree-mFromDegree)*interpolatedTime;final float centerX=mCenterX;final float centerY=mcenterY;final Matrix matrix=t.getMatrix();if(degrees<=-76.0f){degrees=-90.0f;mCamera.save();mCamera.rotateY(degrees);mCamera.getMatrix(matrix);mCamera.restore();}else if(degrees>=76.0f){degrees=90.0f;mCamera.save();mCamera.rotateY(degrees);mCamera.getMatrix(matrix);mCamera.restore();}else {mCamera.save();mCamera.translate(0, 0, centerX);mCamera.rotateY(degrees);mCamera.translate(0, 0, -centerX);mCamera.getMatrix(matrix);mCamera.restore();}matrix.preTranslate(-centerX, -centerX);matrix.postTranslate(centerX, centerX);}}

简单的调用

?

?

 Rotatw3d leftaction=new Rotatw3d(-0, -90, -100, -100, -100, -100);        leftaction.setFillAfter(true);        leftaction.setDuration(5000);        ImageView image=(ImageView)findViewById(R.id.image);        image.startAnimation(leftaction);

?3d的旋转效果是出来了,至于如何精致,你可自由发挥。

热点排行