通过继承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旋转木马的效果。 首先,我们要理解3D旋转的核心概念——`OpenGL ES`。OpenGL ES是Android系统中用于进行2D和3D图形渲染的库,它允许开发者创建复杂的视觉效果。在这个...
在Android中,我们可以使用`android.view.animation`包下的`RotateAnimation`类来创建2D旋转动画,但若要实现3D旋转,则需要利用到`android.graphics.Matrix`类和`Camera`类。 `Matrix`类是Android图形系统的基础,...
Android 3D圆形旋转菜单Android 3D圆形旋转菜单Android 3D圆形旋转菜单Android 3D圆形旋转菜单Android 3D圆形旋转菜单Android 3D圆形旋转菜单Android 3D圆形旋转菜单Android 3D圆形旋转菜单
通过实际操作,你可以更深入地了解如何在Android中实现3D旋转动画。 总之,Android 3D旋转图片涉及Matrix类的使用、2D与3D变换、动画的创建以及可能的OpenGL ES应用。通过学习和实践这个实例,开发者可以掌握...
然而,通过巧妙地运用Canvas和一些数学原理,我们也可以实现3D效果,比如3D旋转木马式的图片展示。这种效果通常用于创建引人入胜的用户界面,使应用更加生动有趣。 3D旋转木马效果涉及到的主要技术点包括: 1. **...
要实现3D旋转,我们需要使用`Matrix`类,它是Android提供的数学矩阵工具类,用于处理几何变换。例如,可以使用`Matrix.setRotateM()`方法来设置旋转矩阵,参数包括旋转中心点、旋转角度以及旋转轴。这里,旋转中心点...
本篇文章将深入探讨Android中的View 3D旋转,包括基本概念、实现方法、关键API以及实际应用示例。 一、3D旋转基础 在Android中,3D旋转是通过组合多个2D旋转来实现的,这些2D旋转可以在不同的轴上进行,例如X轴、Y...
在Android中,实现3D旋转效果的一种方法是通过自定义View或继承现有的View类,比如这里的"gallery"类。Gallery是Android提供的一个可滚动的控件,它允许用户水平滑动浏览一系列的项目。通过扩展Gallery并重写其关键...
要实现3D旋转,我们需要对View的绘制过程有深入的理解,这通常涉及到重写`onDraw()`方法以及利用`Canvas`和`Paint`对象。 在Android中,我们可以使用`Matrix`类来处理二维和三维变换,包括旋转。`Matrix`提供了多种...
3. **Animation和Animator**:Android的动画系统可以用来实现3D旋转效果。`ObjectAnimator`和`ValueAnimator`可以控制对象属性随时间变化,从而创建平滑的动画效果。`PropertyAnimator`接口则提供了对对象属性更精细...
在Android中,如果想要实现3D动画效果一般有两种选择:一是使用Open GL ES,二是使用Camera。Open GL ES使用起来太过复杂,一般是用于比较高级的3D特效或游戏,并且这个也不是开源的,像比较简单的一些3D效果,使用...
本篇文章主要探讨的是如何实现3D旋转这一特殊的自定义动画效果。3D旋转是Android动画库中的一种高级技巧,通过它可以创建出逼真的立体旋转效果,为用户带来更丰富的视觉体验。 在Android中,自定义动画主要包括两种...
接下来,我们需要实现3D旋转动画。在Android中,我们可以使用Animation类或者Animator类来实现动画效果。在这个案例中,我们将使用ObjectAnimator,它提供了更强大的属性动画支持。 首先,定义一个3D旋转的常量: ...
在Android中实现3D旋转,通常会用到` Rotate3DAnimation `类,这是属性动画的一部分。这个类允许我们在X、Y、Z轴上定义旋转,通过设置`fromDegrees`和`toDegrees`参数来定义开始和结束角度,`pivotXValue`和`...
本文将深入探讨如何使用OpenGL ES在Android上实现图片的3D旋转。 首先,理解OpenGL ES的基本概念至关重要。OpenGL ES是OpenGL的一个子集,专为嵌入式系统设计,如智能手机和平板电脑。它提供了一个离散的图形编程...
4. **3D效果**:要实现3D旋转,需要设置View的`android:transformPivotX` 和 `android:transformPivotY` 属性,这些属性定义了旋转的中心点。例如,如果你想让View在其自身的中心点旋转,可以这样设置: ```xml ...
例如,使用`ObjectAnimator`实现3D旋转: ```java ObjectAnimator rotation = ObjectAnimator.ofFloat(view, "rotationX", 0f, 90f); rotation.setDuration(2000); rotation.start(); ``` 3D旋转还涉及到OpenGL ES...
通过研究这个项目,你可以了解到如何在Android中结合OpenGL ES实现3D立体图片旋转,同时也可以加深对3D图形编程的理解。这是一个很好的学习资源,有助于提升你在Android游戏开发或图形界面设计方面的技能。
本文将深入探讨如何使用`Camera`类在Android应用中执行3D旋转,以此来创建动态且引人入胜的用户界面。 `Camera`类在Android中主要负责处理视图的变换,它允许我们进行平移、旋转和缩放操作,以展示3D空间中的内容。...