`

android 3d 旋转

阅读更多

 

在javaeye里看到了关于3d旋转的文章,可是博主没有透入什么技术细节。由于一直想做出那种旋转效果,所以就想啊想,终于想出来了( 我是个小菜鸟)。呵呵,不管怎样,希望对想做还没做出来的朋友一些帮助。

先上一个效果图:

 

这是你想要的吗?如果是就继续往下看吧。

其实,这个效果是用animation配合camera做出来的,相信大家在apidemo里面看过类似的。

那么先写一个继承animation的类:Rotate3d

 

public class Rotate3d 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 Rotate3d(float fromDegree, float toDegree, float left, float top,
			float centerX, float centerY) {
		this.mFromDegree = fromDegree;
		this.mToDegree = toDegree;
		this.mLeft = left;
		this.mTop = top;
		this.mCenterX = centerX;
		this.mCenterY = centerY;

	}

	@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, -centerY);
		matrix.postTranslate(centerX, centerY);
	}
}

 

 有了这个类一切都会变得简单的,接着只要在activity中写两个Rotate3d的对象,让两个view,分别做这两个对象的animation就好了。( 原来就这么简单啊!无语)

 

//下面两句很关键哦,呵呵,心照不宣。
    	Rotate3d leftAnimation = new Rotate3d(-0, -90, 0, 0, mCenterX, mCenterY);
        Rotate3d rightAnimation = new Rotate3d(-0+90, -90+90, 0.0f, 0.0f, mCenterX, mCenterY);

        leftAnimation.setFillAfter(true);
        leftAnimation.setDuration(1000);
        rightAnimation.setFillAfter(true);
        rightAnimation.setDuration(1000);

        mImageView1.startAnimation(leftAnimation);
        mImageView2.startAnimation(rightAnimation);

 

 还要写一下mImageView1,mImageView2的xml,

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    >

    <FrameLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

                   <ImageView
	    			android:id="@+id/image1"
	    			android:layout_gravity="center_horizontal"
	    			android:layout_width="fill_parent"
	    			android:layout_height="wrap_content"
	    			android:src="@drawable/image1"
	    			/>
                   <ImageView
	    			android:id="@+id/image2"
	    			android:background="#ffff0000"
	    			android:layout_gravity="center_horizontal"
	    			android:layout_width="fill_parent"
	    			android:layout_height="wrap_content"
	    			android:src="@drawable/image2"
	    			/>

    </FrameLayout>
</LinearLayout>
 

 写完收工。如果有不足之处,还请朋友们不吝指教。

 

 

分享到:
评论

相关推荐

    android3D旋转图片

    在"android3D旋转图片"的实例中,我们可能首先需要创建一个ImageView或自定义视图来显示图片,并准备一个Matrix对象来存储变换信息。然后,我们可以使用`Matrix.setRotate()`方法设置旋转角度,这个方法会更新矩阵以...

    android 3D旋转相册

    在Android平台上,开发3D旋转相册是一种提升用户体验和视觉效果的高级技术。"android 3D旋转相册"指的是利用Android SDK中的图形库和动画API来创建一个具有立体感和动态旋转效果的图片浏览应用。这样的相册不仅能够...

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

    在Android开发中,3D旋转屏幕的实现是一个高级特性,它可以为用户带来更生动、更具交互性的体验。本文将深入探讨如何在Android中实现在不同轴上的3D旋转效果,并结合"Rotate3D"这个文件名,我们可以推断这是一个与3D...

    Android的3D旋转

    在Android开发中,3D旋转是一种常见的动画效果,可以为用户界面增添丰富的视觉体验。本文将深入探讨Android的3D旋转实现方式,包括基础概念、关键API以及如何在实际项目中应用。 首先,理解3D旋转的核心概念是必要...

    Android 3D圆形旋转菜单

    Android 3D圆形旋转菜单Android 3D圆形旋转菜单Android 3D圆形旋转菜单Android 3D圆形旋转菜单Android 3D圆形旋转菜单Android 3D圆形旋转菜单Android 3D圆形旋转菜单Android 3D圆形旋转菜单

    android 3D 旋转效果

    在Android开发中,3D旋转效果是一种常见的动画技术,它能为用户界面带来生动和立体的感受,提升用户体验。本文将深入探讨如何在Android平台上实现3D旋转效果,并结合`MyRorateViewTest`这个示例项目进行讲解。 一、...

    Android 3D 旋转

    在Android开发中,3D旋转是一种常见的动画效果,可以为用户界面增添丰富的视觉体验。"Android 3D 旋转"通常涉及到OpenGL ES、View动画、属性动画等技术,用于实现类似《Dota2》选择服务器界面那样的立体动态展示。...

    android 3D旋转效果控件

    在Android开发中,3D旋转效果控件是一种增强用户界面体验的重要技术,它能为应用程序带来生动、立体的视觉效果。3D旋转通常涉及到视图的转换和动画,通过使用Android提供的视图动画API或者属性动画API来实现。本文将...

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

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

    android 3D坐标旋转

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

    Android自定义动画 3D旋转

    3D旋转是Android动画库中的一种高级技巧,通过它可以创建出逼真的立体旋转效果,为用户带来更丰富的视觉体验。 在Android中,自定义动画主要包括两种类型:属性动画(Property Animation)和视图动画(View ...

    Android 3D 旋转立方体

    实现自动旋转的渐变色立方体

    android-opengl图片3d旋转

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

    Android 随手势进行3D旋转的源码-IT计算机-毕业设计.zip

    "Android 随手势进行3D旋转的源码"是一个典型的项目,它结合了这两个方面,旨在帮助学生进行毕业设计学习。这个项目可能包含了一系列的类、XML布局文件以及相关的资源文件,用于实现用户手势控制下的3D对象旋转效果...

    Android 3D旋转动画效果(Animation扩展)

    主要介绍一下如何实现View的3D旋转效果,实现的主要原理就是围绕Y轴旋转,同时在Z轴方面上有一个深入的缩放。 演示的demo主要有以下几个重点: 1,自定义旋转动画 2,动画做完后,重置ImageView

    Android代码-3d旋转切换view

    1、支持3d旋转。 2、支持自定义旋转。 3、点击3d切换,触摸滑动3d切换 配置view 布局xml里: 代码设置: mLoopRotarySwitchView .setR(300)//设置R的大小 .setAutoRotation(true)//是否自动切换 ....

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

    总的来说,"android canvas 3D旋转木马 图片立体展示"是一个结合了Android图形编程、动画技术和用户交互的复杂项目。它需要开发者具备扎实的数学基础、良好的编程技巧以及对Android系统理解的深度。通过学习和实践这...

    Android 3D旋转动画效果实现分解

    这篇文章主要介绍一下如何实现View的3D旋转效果,实现的主要原理就是围绕Y轴旋转,同时在Z轴方面上有一个深入的缩放。演示的demo主要有以下几个重点: 1,自定义旋转动画 2,动画做完后,重置ImageView 先看一下程序...

    Android 3D View旋转效果

    本文将深入探讨如何在Android中实现View的3D旋转效果。 首先,理解Android的视图系统至关重要。Android中的View是UI的基本构建块,它负责绘制和处理用户交互。要实现3D旋转,我们需要对View的绘制过程有深入的理解...

    Android View 3D旋转

    在Android开发中,View的3D旋转是一种常用的技术,它能为用户界面带来生动和立体的效果。本篇文章将深入探讨Android中的View 3D旋转,包括基本概念、实现方法、关键API以及实际应用示例。 一、3D旋转基础 在Android...

Global site tag (gtag.js) - Google Analytics