`
yangzc106
  • 浏览: 156422 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

View 3D旋转

 
阅读更多

没事自己写的:

 

package com.zgy.android;

import android.app.Activity;
import android.graphics.Camera;
import android.graphics.Matrix;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.Animation;
import android.view.animation.DecelerateInterpolator;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;

public class Transition3d extends Activity implements
		AdapterView.OnItemClickListener {
	private ListView mPhotosList;
	private ViewGroup mContainer;
	private ImageView mImageView;

	private static final String[] PHOTOS_NAMES = new String[] { "Lyon",
			"Livermore" };

	private static final int[] PHOTOS_RESOURCES = new int[] {
			R.drawable.sample_5, R.drawable.sample_7 };

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		setContentView(R.layout.animations_main_screen);

		mPhotosList = (ListView) findViewById(android.R.id.list);
		mImageView = (ImageView) findViewById(R.id.picture);
		mContainer = (ViewGroup) findViewById(R.id.container);

		final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
				android.R.layout.simple_list_item_1, PHOTOS_NAMES);

		mPhotosList.setAdapter(adapter);
		mPhotosList.setOnItemClickListener(this);

		mPhotosList
				.setPersistentDrawingCache(ViewGroup.PERSISTENT_ANIMATION_CACHE);
	}

	private void applyRotation(View view, int position, float start, float end) {
		final float centerX = view.getWidth() / 2.0f;
		final float centerY = view.getHeight() / 2.0f;

		final Rotate3dAnimation rotation = new Rotate3dAnimation(start, end,
				centerX, centerY, 0.0f, true);
		rotation.setDuration(500);
		rotation.setFillAfter(true);
		rotation.setFillEnabled(true);
		
		rotation.setInterpolator(new AccelerateInterpolator());
		rotation.setAnimationListener(new DisplayNextView(position));
		view.startAnimation(rotation);
	}

	public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
		applyRotation(mPhotosList, position, 0, 90);

		final float centerX = mContainer.getWidth() / 2.0f;
		final float centerY = mContainer.getHeight() / 2.0f;

		mImageView.setImageResource(PHOTOS_RESOURCES[position]);
		
		Rotate3dAnimation rotation = new Rotate3dAnimation(0, -90, centerX, centerY, 0, false);
		rotation.setFillAfter(true);
		rotation.setFillEnabled(true);
		rotation.setDuration(0);
		mImageView.startAnimation(rotation);
	}

	private final class DisplayNextView implements Animation.AnimationListener {
		private final int mPosition;

		private DisplayNextView(int position) {
			mPosition = position;
		}

		public void onAnimationStart(Animation animation) {
		}

		public void onAnimationEnd(Animation animation) {
			mPhotosList.setVisibility(View.GONE);
			mImageView.setVisibility(View.VISIBLE);
			
			mContainer.post(new SwapViews());
		}

		public void onAnimationRepeat(Animation animation) {
		}
	}

	private final class SwapViews implements Runnable {

		public void run() {
			final float centerX = mContainer.getWidth() / 2.0f;
			final float centerY = mContainer.getHeight() / 2.0f;

			Rotate3dAnimation rotation = new Rotate3dAnimation(-90, 0, centerX,
					centerY, 0, false);
			rotation.setDuration(500);
			rotation.setFillEnabled(true);
			rotation.setFillAfter(true);
			rotation.setInterpolator(new AccelerateInterpolator());
			mImageView.startAnimation(rotation);
		}
	}
}
 

 

分享到:
评论

相关推荐

    Android View 3D旋转

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

    Android 3D View旋转效果

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

    Android的3D旋转

    在Android中,我们可以使用`android.view.animation`包下的`RotateAnimation`类来创建2D旋转动画,但若要实现3D旋转,则需要利用到`android.graphics.Matrix`类和`Camera`类。 `Matrix`类是Android图形系统的基础,...

    3d旋转切换view类似旋转木马效果.rar

    在Android开发中,3D旋转切换View的效果通常用于创建引人入目的用户界面,比如应用的启动页或者图片浏览组件。这种效果模仿了现实世界中的旋转木马,使得多个视图能够围绕一个中心轴线旋转,用户可以通过手势或按钮...

    android view的旋转

    开发者可以根据需求选择合适的方法和API来实现旋转效果,无论是简单的2D旋转还是复杂的3D旋转,都能为应用增添丰富的视觉体验。在实际编程过程中,还需要注意性能优化,合理利用硬件加速以及避免不必要的重绘,以...

    Flex4 3D旋转效果

    为了实现3D旋转效果,我们首先需要创建一个`View3D`实例,它是所有3D元素的舞台。在MXML中,你可以这样定义: ```xml &lt;mx:View3D id="view3D" width="100%" height="100%"&gt; &lt;!-- 3D内容将放在这里 --&gt; &lt;/mx:View3D...

    android叠层3D旋转效果

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

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

    另外,"Rotate3D"这个文件可能是包含了一个自定义的`View`或者一个示例项目,用于演示3D旋转效果。如果这个文件是一个Android Studio项目,那么在项目中可能有自定义的动画类、布局文件和相应的触发旋转事件的逻辑。...

    Android代码-3d旋转切换view

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

    Android自定义动画 3D旋转

    这段代码将使指定的view在X轴上进行90度的3D旋转,整个过程持续1秒。 为了实现更复杂的3D旋转,我们可能需要结合使用Matrix类来手动计算旋转矩阵,然后更新View的绘制矩阵。这涉及到对3D空间坐标变换的理解,包括...

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

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

    3d旋转切换view,类似旋转木马效果

    在IT行业中,3D旋转切换View是一种常见的交互设计,它为用户提供了丰富的视觉体验和直观的操作方式,尤其在展示多项目或数据时效果显著。这种效果通常被比喻为“旋转木马”,因为它的动态表现就像旋转木马上依次展示...

    android 3D旋转相册

    10. **自定义View和动画**:创建3D旋转相册往往需要自定义View,以便实现特定的3D效果和动画逻辑。这可能涉及到重写`onDraw()`方法,使用`Canvas`进行绘图,以及创建自定义动画类。 综上所述,实现“android 3D旋转...

    android360度3D旋转动画

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

    qt3d 实现物体绕自身坐标系旋转 源码

    首先,理解3D旋转的基本原理。在三维空间中,物体的旋转可以围绕三个轴进行:X轴、Y轴和Z轴。在Qt 3D中,我们可以使用`Qt3DExtras::Qt3DWindow`作为主窗口,然后通过`Entity`对象表示3D场景中的物体,并利用`...

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

    在Android开发中,3D旋转效果常常用于提升用户体验,特别是在展示产品或图像时,能带给用户更为生动真实的视觉感受。本教程将通过一个基于Android Studio的3D旋转展示产品的demo来详细讲解如何实现这一功能。 首先...

    android 3D旋转效果控件

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

    3D旋转效果

    `ObjectAnimator`可以直接操作对象的属性,比如我们可以通过改变`View`的`rotationX`或`rotationY`属性来实现3D旋转。下面是一个简单的`ObjectAnimator`示例: ```java ObjectAnimator rotateAnimation = ...

    3D Tabhost 旋转 动画 效果

    这个自定义视图会继承自Android的`View`或`ViewGroup`,并在其中实现3D旋转的逻辑。这可能涉及到重写`onDraw()`方法,使用`Canvas`进行绘图,并应用3D旋转矩阵。此外,可能还需要使用`ObjectAnimator`或者`...

    OpenGL 3D 旋转模型

    此外,模型的自动旋转是通过更新模型视图矩阵(Model-View Matrix)来实现的。在3D图形中,矩阵变换用于定位、缩放和旋转物体。项目可能使用了旋转矩阵,结合时间变量以实现平滑的旋转动画。常见的旋转方式有欧拉角...

Global site tag (gtag.js) - Google Analytics