`
348725767
  • 浏览: 105693 次
  • 性别: Icon_minigender_1
  • 来自: 温州
社区版块
存档分类
最新评论

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;
	}
	@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的旋转效果是出来了,至于如何精致,你可自由发挥。

分享到:
评论

相关推荐

    Android-3D自动旋转的旋转木马

    在本项目中,我们将会探讨如何实现这样一个3D旋转木马的效果。 首先,我们要理解3D旋转的核心概念——`OpenGL ES`。OpenGL ES是Android系统中用于进行2D和3D图形渲染的库,它允许开发者创建复杂的视觉效果。在这个...

    Android的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圆形旋转菜单

    android3D旋转图片

    通过实际操作,你可以更深入地了解如何在Android中实现3D旋转动画。 总之,Android 3D旋转图片涉及Matrix类的使用、2D与3D变换、动画的创建以及可能的OpenGL ES应用。通过学习和实践这个实例,开发者可以掌握...

    android canvas 3D旋转木马 图片立体展示

    然而,通过巧妙地运用Canvas和一些数学原理,我们也可以实现3D效果,比如3D旋转木马式的图片展示。这种效果通常用于创建引人入胜的用户界面,使应用更加生动有趣。 3D旋转木马效果涉及到的主要技术点包括: 1. **...

    android 3D坐标旋转

    要实现3D旋转,我们需要使用`Matrix`类,它是Android提供的数学矩阵工具类,用于处理几何变换。例如,可以使用`Matrix.setRotateM()`方法来设置旋转矩阵,参数包括旋转中心点、旋转角度以及旋转轴。这里,旋转中心点...

    Android View 3D旋转

    本篇文章将深入探讨Android中的View 3D旋转,包括基本概念、实现方法、关键API以及实际应用示例。 一、3D旋转基础 在Android中,3D旋转是通过组合多个2D旋转来实现的,这些2D旋转可以在不同的轴上进行,例如X轴、Y...

    android叠层3D旋转效果

    在Android中,实现3D旋转效果的一种方法是通过自定义View或继承现有的View类,比如这里的"gallery"类。Gallery是Android提供的一个可滚动的控件,它允许用户水平滑动浏览一系列的项目。通过扩展Gallery并重写其关键...

    Android 3D View旋转效果

    要实现3D旋转,我们需要对View的绘制过程有深入的理解,这通常涉及到重写`onDraw()`方法以及利用`Canvas`和`Paint`对象。 在Android中,我们可以使用`Matrix`类来处理二维和三维变换,包括旋转。`Matrix`提供了多种...

    android 3D旋转相册

    3. **Animation和Animator**:Android的动画系统可以用来实现3D旋转效果。`ObjectAnimator`和`ValueAnimator`可以控制对象属性随时间变化,从而创建平滑的动画效果。`PropertyAnimator`接口则提供了对对象属性更精细...

    Android酷炫动画效果之3D星体旋转效果

    在Android中,如果想要实现3D动画效果一般有两种选择:一是使用Open GL ES,二是使用Camera。Open GL ES使用起来太过复杂,一般是用于比较高级的3D特效或游戏,并且这个也不是开源的,像比较简单的一些3D效果,使用...

    Android自定义动画 3D旋转

    本篇文章主要探讨的是如何实现3D旋转这一特殊的自定义动画效果。3D旋转是Android动画库中的一种高级技巧,通过它可以创建出逼真的立体旋转效果,为用户带来更丰富的视觉体验。 在Android中,自定义动画主要包括两种...

    android studio 3d旋转展示产品的demo

    接下来,我们需要实现3D旋转动画。在Android中,我们可以使用Animation类或者Animator类来实现动画效果。在这个案例中,我们将使用ObjectAnimator,它提供了更强大的属性动画支持。 首先,定义一个3D旋转的常量: ...

    android 3D旋转屏幕实现,直接解压

    在Android中实现3D旋转,通常会用到` Rotate3DAnimation `类,这是属性动画的一部分。这个类允许我们在X、Y、Z轴上定义旋转,通过设置`fromDegrees`和`toDegrees`参数来定义开始和结束角度,`pivotXValue`和`...

    android-opengl图片3d旋转

    本文将深入探讨如何使用OpenGL ES在Android上实现图片的3D旋转。 首先,理解OpenGL ES的基本概念至关重要。OpenGL ES是OpenGL的一个子集,专为嵌入式系统设计,如智能手机和平板电脑。它提供了一个离散的图形编程...

    android360度3D旋转动画

    4. **3D效果**:要实现3D旋转,需要设置View的`android:transformPivotX` 和 `android:transformPivotY` 属性,这些属性定义了旋转的中心点。例如,如果你想让View在其自身的中心点旋转,可以这样设置: ```xml ...

    android 3D旋转效果控件

    例如,使用`ObjectAnimator`实现3D旋转: ```java ObjectAnimator rotation = ObjectAnimator.ofFloat(view, "rotationX", 0f, 90f); rotation.setDuration(2000); rotation.start(); ``` 3D旋转还涉及到OpenGL ES...

    android 3D立体图片旋转

    通过研究这个项目,你可以了解到如何在Android中结合OpenGL ES实现3D立体图片旋转,同时也可以加深对3D图形编程的理解。这是一个很好的学习资源,有助于提升你在Android游戏开发或图形界面设计方面的技能。

    Android使用Camera进行3D旋转

    本文将深入探讨如何使用`Camera`类在Android应用中执行3D旋转,以此来创建动态且引人入胜的用户界面。 `Camera`类在Android中主要负责处理视图的变换,它允许我们进行平移、旋转和缩放操作,以展示3D空间中的内容。...

Global site tag (gtag.js) - Google Analytics