通过继承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;
}
@Override
public void initialize(int width, int height, int parentWidth,
int parentHeight)
{
super.initialize(width, height, parentWidth, parentHeight);
mCamera=new Camera();
}
@Override
protected 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的旋转效果是出来了,至于如何精致,你可自由发挥。
分享到:
相关推荐
3D自动旋转的旋转木马
对android中3D旋转的代码解释,方便自己学习,如果有android新手的话也可以看看是如何实现的,
android实现了View--3d旋转效果
android 3D旋转屏幕实现,直接解压
Android3D 360度旋转 3D特效
android opengles 贴图旋转3D立方体,源码和apk
3D有叠层旋转效果的特效,android开发的。采用继承gallery类实现的3D旋转效果。我花了好大的心血写的。提供各位参考。以帮助开发中急需要此效果的同志们。
本文实例讲述了Android编程实现3D旋转效果的方法。分享给大家供大家参考,具体如下: 下面的示例是在Android中实现图片3D旋转的效果。 实现3D效果一般使用OpenGL,但在Android平台下可以不直接使用OpenGL,而是使用...
本文实例讲述了Android编程实现3D滑动旋转效果的方法。分享给大家供大家参考,具体如下: 这里我们通过代码实现一些滑动翻页的动画效果。 Animation实现动画有两个方式:帧动画(frame-by-frame animation)和补间...
Android 滑动效果 3D旋转,Animation动画实现
OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,网络上一些小伙伴写的一些关于Android版OpenCV的博客,大部分都模糊不清,基本就复制粘贴的,有些甚至没有实践就直接贴上去了,这样...
3D球状旋转旋转tag
ImageSwither实现3d图片轮播+手势轮播
实现自动旋转的渐变色立方体
本文要实现的3D星体旋转效果是从CoverFlow演绎而来,不过CoverFlow只是对图像进行转动,我这里要实现的效果是要对所有的View进行类似旋转木马的转动
Android应用源码开发Demo,主要用于毕业设计学习。
Android高仿优酷旋转菜单,实现menu键监听
第17章 益智类游戏——《旋转积木》本章介绍了Android 3D游戏《旋转积木》的开发。主要介绍了积木旋转的不同状态的实现方法和地图设计器的应用 第18章 休闲类游戏——《摩天大楼》本章介绍了Android 3D游戏...
这篇文章主要介绍一下如何实现View的3D旋转效果,实现的主要原理就是围绕Y轴旋转,同时在Z轴方面上有一个深入的缩放。演示的demo主要有以下几个重点: 1,自定义旋转动画 2,动画做完后,重置ImageView 先看一下程序...