android 3D旋转效果实现

Posted 懒,是向前迈进的最大障碍! --沃.兹基朔德

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 3D旋转效果实现相关的知识,希望对你有一定的参考价值。

一说到3D,可能第一反应就是使用OpenGL ES。。。。但是,实现这么个小功能,要动用这玩意,莫名的恐惧啊!!!!至今也没弄明白这个怎么玩。。。

好吧,幸亏还有个Camera类可以帮助我们,据说底层实现实现也是使用的是OpenGL ES 

注意:使用的是android.graphics.Camera  

话不多说了,直接上代码:

public class _3DAnimation extends Animation {
    private  float mFromDegrees;
    private  float mToDegrees;
    private  float mCenterX;
    private  float mCenterY;
    private Camera mCamera;
    public  _3DAnimation(float fromDegress,float toDegress){
        this.mFromDegrees=fromDegress;
        this.mToDegrees=toDegress;

    }
    @Override
    public void initialize(int width, int height, int parentWidth, int parentHeight) {
        super.initialize(width, height, parentWidth, parentHeight);
        this.mCenterX=width/2;
        this.mCenterY=height/2;
        mCamera=new Camera();
    }

    @Override
    protected void applyTransformation(float interpolatedTime, Transformation t) {
        super.applyTransformation(interpolatedTime, t);
        final float fromDegrees = mFromDegrees;
        float degrees = fromDegrees + (mToDegrees - mFromDegrees) * interpolatedTime;
        final Matrix matrix = t.getMatrix();
        //interpolatedTime 0~1变化
        mCamera.save();
        mCamera.rotateY(degrees);
        mCamera.getMatrix(matrix);
        mCamera.restore();
        matrix.preTranslate(-mCenterX, -mCenterY);//相机位于(0,0),移动图片,相机位于图片中心
        matrix.postTranslate(mCenterX, mCenterY);
    }
}

 

以上是关于android 3D旋转效果实现的主要内容,如果未能解决你的问题,请参考以下文章

android 自定义控件实现3D画廊效果

Android - 在同一个 XML 文件上制作翻译和 objectAnimator

CSS3——3D旋转图(跑马灯效果图)

css3怎么让3d旋转的层近大远小

Canvas实现3D效果-可旋转的立方体

3D旋转仿伪3D立体效果,手机端