- 浏览: 626966 次
- 性别:
- 来自: 济南
文章分类
- 全部博客 (164)
- android(基础) (81)
- android(进阶) (2)
- android(底层) (7)
- android(面试) (0)
- android(多媒体) (1)
- android(组件学习) (4)
- android(网络相关) (0)
- android(动画) (1)
- android(数据库) (2)
- android(UI样式) (3)
- android(xml) (0)
- android(调试) (14)
- android(环境搭建) (7)
- android(api) (1)
- C++ (1)
- C (0)
- JavaSE (2)
- Objective-c (1)
- JavaScript (0)
- 设计模式 (0)
- eclipse (3)
- javaee (4)
- 其它 (5)
- linux (18)
- Oracle (1)
- mysql (1)
- 嵌入式linux (1)
- 版本控制工具 (3)
- web前端 (1)
- python (1)
最新评论
-
chungehenyy:
android颜色对应的xml配置值,颜色表 -
u011467537:
...
android中用Spannable在TextView中设置超链接、颜色、字体 -
SurpriseLee:
不能更赞了!
android颜色对应的xml配置值,颜色表 -
u012094586:
这个代码是不是不全呀,能不能提供完整版的给予参考呢?xiexi ...
Android VideoView如何播放RTSP的流 -
luechenying:
顶上天!!!!!!!!!!!!!!!!!!
android颜色对应的xml配置值,颜色表
修改自网上的一篇关于Layout 3D旋转的文章,添加了手势旋转处理
效果图如下:
1.Layout3D.java
2. Rotate3d.java
3.main.xml
4.mylayout.xml
效果图如下:
1.Layout3D.java
package cn.com; import android.app.Activity; import android.os.Bundle; import android.view.GestureDetector; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.Button; public class Layout3D extends Activity { private int mCenterX = 160; private int mCenterY = 0; private ViewGroup layout1; private ViewGroup layout2; private Rotate3d leftAnimation; private Rotate3d rightAnimation; private GestureDetector gestureDetector; private FlingGuest flingGuest; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); initFirst(); flingGuest = new FlingGuest(Layout3D.this); gestureDetector = new GestureDetector(Layout3D.this, flingGuest); layout1 = (ViewGroup) findViewById(R.id.layout1); layout2 = (ViewGroup) findViewById(R.id.layout1); Button b1 = (Button) findViewById(R.id.button1); b1.setEnabled(true); b1.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { leftMoveHandle(); v.setEnabled(false); } }); } public void initFirst(){ leftAnimation = new Rotate3d(0, -90, 0.0f, 0.0f, mCenterX, mCenterY); rightAnimation = new Rotate3d(90, 0, 0.0f, 0.0f, mCenterX, mCenterY); leftAnimation.setFillAfter(true); leftAnimation.setDuration(1000); rightAnimation.setFillAfter(true); rightAnimation.setDuration(1000); } public void initSecond(){ leftAnimation = new Rotate3d(-90, 0, 0.0f, 0.0f, mCenterX, mCenterY); rightAnimation = new Rotate3d(0, 90, 0.0f, 0.0f, mCenterX, mCenterY); leftAnimation.setFillAfter(true); leftAnimation.setDuration(1000); rightAnimation.setFillAfter(true); rightAnimation.setDuration(1000); } public void jumpToLayout1(Rotate3d leftAnimation) { setContentView(R.layout.main); layout2 = (ViewGroup) findViewById(R.id.layout1); layout1 = (ViewGroup) findViewById(R.id.layout1); layout1.startAnimation(leftAnimation); Button b1 = (Button) findViewById(R.id.button1); b1.setEnabled(true); b1.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { leftMoveHandle(); } }); } public void jumpToLayout2(Rotate3d rightAnimation) { setContentView(R.layout.mylayout); layout1 = (ViewGroup) findViewById(R.id.layout2); layout2 = (ViewGroup) findViewById(R.id.layout2); layout2.startAnimation(rightAnimation); Button b2 = (Button) findViewById(R.id.button2); b2.setEnabled(true); b2.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { rightMoveHandle(); } }); } public void leftMoveHandle() { initFirst(); layout1.startAnimation(leftAnimation); jumpToLayout2(rightAnimation); } public void rightMoveHandle() { initSecond(); layout2.startAnimation(rightAnimation); jumpToLayout1(leftAnimation); } @Override public boolean dispatchTouchEvent(MotionEvent ev) { super.dispatchTouchEvent(ev); return gestureDetector.onTouchEvent(ev); } }
2. Rotate3d.java
package cn.com; import android.graphics.Camera; import android.graphics.Matrix; import android.view.animation.Animation; import android.view.animation.Transformation; 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); } }
3.main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:layout_width="fill_parent" android:id="@+id/layout1" android:layout_height="fill_parent" android:background="@drawable/black" xmlns:android="http://schemas.android.com/apk/res/android"> <Button android:id="@+id/button1" android:layout_width="118px" android:layout_height="wrap_content" android:text="Go to Layout2"> </Button> <TextView android:id="@+id/text1" android:textSize="24sp" android:layout_width="186px" android:layout_height="29px" android:text="@string/layout1" android:layout_below="@+id/button1"></TextView> </RelativeLayout>
4.mylayout.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:layout_width="fill_parent" android:id="@+id/layout2" android:layout_height="fill_parent" android:background="@drawable/white" xmlns:android="http://schemas.android.com/apk/res/android"> <Button android:id="@+id/button2" android:layout_width="118px" android:layout_height="wrap_content" android:text="Go to Layout1"> </Button> <TextView android:id="@+id/text2" android:textSize="24sp" android:layout_width="186px" android:layout_height="29px" android:textColor="@drawable/black" android:text="@string/layout2" android:layout_below="@+id/button2"> </TextView> </RelativeLayout>
发表评论
-
Fragment 横竖屏切换问题
2013-04-24 14:41 1868在默认情况下当发生横 ... -
Android EditText 增加自定义过滤
2012-02-19 22:20 2430在Android中,可以通过对EditText设置setFil ... -
解决android textview自动换行问题
2012-02-16 11:46 10795今天忽然发现android项目中的文字排版参差不齐的情况非常严 ... -
通过adb命令获取Android手机的IP地址
2011-12-30 19:11 4405要获取Android手机的IP地址,必须先保证你的Androi ... -
Android 图形用户界面 之 绘图(二) Paint类 主要方法介绍
2011-12-30 09:10 1474/** * Paint类介绍 * * Pa ... -
ListView底部分隔线的问题
2011-12-20 14:42 4334在工作中遇到了一个难题,就是一个listView在最下面的一个 ... -
android获取手机上的图片和视频缩略图thumbnails
2011-11-03 22:05 10080转贴自:http://www.android123.com.c ... -
Activity中使用AIDL让Service与Activity通信
2011-10-25 00:06 2808简易计算器,默认执行1+1的计算,点击go按钮执行计算,先看效 ... -
Android图形报表之AchartEngine(附开发包+API文档)
2011-10-22 16:49 11419统计报表: Java4Less (http://java4le ... -
android中用Spannable在TextView中设置超链接、颜色、字体
2011-10-21 23:08 50572昨晚研读 ApiDemo 源码至 com.example.an ... -
android动态设置TextView字体颜色
2011-10-21 11:50 6484最近写程序就遇到了这么个难题,在TextView 上,正常字体 ... -
layer-list和include的使用
2011-10-20 10:14 2421layer-list,include,merge使用,记录一下 ... -
自定义AlertDialog样式,根据屏幕大小来显示
2011-10-19 12:43 4636先介绍一些关于AlertDialog的基本知识: ... -
Android获取屏幕分辨率及DisplayMetrics简介
2011-10-19 08:56 2842Android 可设置为随着窗口大小调整缩放比例,但即便如此, ... -
android资源文件访问android.resource
2011-10-17 09:14 4226android.resource使用转自:http://www ... -
ImageView添加边框
2011-10-16 19:37 2123import android.content.Context; ... -
Android 实现TextView中文字链接的方式
2011-10-16 14:08 2532Android 的实现TextView中文字链接的方式有很多种 ... -
android实现TextView多行文本滚动
2011-10-16 13:38 6452Android中我们为了实现文本的滚动可以在ScrollVie ... -
ListView之setEmptyView的问题
2011-10-15 23:19 4984使用listView或者gridView时,当列表为空时,有时 ... -
去掉TabActivity底部默认白线
2011-10-15 16:38 3313经过一翻百度,google终于实现了TabActivity设置 ...
相关推荐
至于“工具”,Android Studio提供了一系列的调试工具,如Hierarchy Viewer和Layout Inspector,可以帮助开发者可视化和调试3D旋转效果,确保动画在不同设备上表现一致。 总结起来,Android的3D旋转涉及到`Matrix`...
在Android开发中,3D旋转效果常常用于提升用户体验,特别是在展示产品或图像时,能带给用户更为生动真实的视觉感受。本教程将通过一个基于Android Studio的3D旋转展示产品的demo来详细讲解如何实现这一功能。 首先...
**CSS3 3D旋转与色子应用** 在现代网页设计中,CSS3引入了许多新的特性和功能,其中3D变换是极具创新性的一项。3D旋转让元素能够在三维空间中展示动态效果,极大地增强了用户体验。本项目"css3-3d旋转-色子"就是对...
3D旋转木马容器控件,可以无限循环,自动旋转(方向分顺时针和逆时针),可以手势切换或单击切换。 效果图 如何使用 在你的项目Gradle添加 compile 'com.dalong:loopview:1.0.4' 或者直接约会库文件 1.0.4版本 1、...
2. **过渡(Transitions)**:CSS3的过渡效果允许我们在两个样式之间平滑地过渡,比如在图片切换时,可以设定一个平滑的3D旋转过渡,增加视觉吸引力。 3. **动画(Animations)**:CSS3动画通过关键帧(`@keyframes`)...
在图片旋转切换中,我们会用到`CATransform3DRotate`方法来实现3D旋转效果。 2. **UIImageView**与**CAAnimation**: 通常,我们会将图片存储在`UIImageView`对象中,并通过设置`imageView.layer`的`transform`属性...
在Unity3D中,我们可以使用内置的Camera类和Input类来控制相机的旋转。通常,我们会在Update()函数中监听键盘或鼠标输入,根据输入信息更新相机的旋转角度。例如,我们可以用Input.GetAxis("Mouse X")和Input....
"UVLayout"是一款专为3D模型展UV设计的专业软件,因其高效、易用而备受业界好评。本文将详细介绍UVLayout的主要功能、优势以及如何使用它来优化模型的UV展开。 首先,UVLayout以其直观简洁的用户界面著称,即使是对...
- 用户可以从SketchUp中导入模型,将3D设计整合到LayOut的文档中,便于进行2D表示和注释。 - 这些模型可以被缩放、旋转,甚至添加动画,使得演示更具动态性和说服力。 总的来说,LayOut 3是SketchUp用户的得力...
瀑布流布局(Waterfall Layout),又称Infinite Scroll或Pinterest Layout,是一种流行的设计模式,特别是在展示图片或者商品的列表中。它的特点是每个单元格的高度根据其内容自动调整,形成多列不等高的布局,模拟...
其次,Sprint-Layout 6.0 提供了强大的编辑工具,如精确的尺寸控制、旋转和镜像操作,以及复制和粘贴功能,使得设计修改和优化变得更加容易。此外,它还支持3D预览,用户可以在设计过程中直观地查看电路板的立体效果...
对于复杂的模型,UVLayout提供了强大的手动调整工具,如滑动、旋转、缩放等,使艺术家能够精细化控制每个面的UV位置,确保贴图的准确无误。 其次,UVLayout支持多种三维软件的导入和导出,如Maya和3ds Max。这使得...
2. **交互式编辑**:用户可以直接在3D视图中拖拽、拉伸和旋转UV,实时预览效果。这种直观的操作方式大大提高了工作效率。 3. **优化工具**:软件内置了多种UV优化算法,如平滑、挤压、均匀分布等,用于改进UV的排列...
1. **3D查看**:利用3D视图功能,检查元器件的立体布局和布线的立体效果,提前发现可能的问题。 2. **信号完整性分析**:学习如何进行信号完整性分析,预测电路板的电磁兼容性和性能。 3. **设计规则检查(DRC)**:...
在实际使用中,UVLayout与其他3D软件的集成也相当流畅。它支持导入导出多种常见的3D格式,如OBJ、FBX、3DS等,方便与Maya、3ds Max、Blender等主流建模软件配合使用。在完成UV工作后,可以直接输出为纹理坐标文件,...
这款3D Layout不仅视觉上吸引人,还支持通过触摸事件来触发3D变换,或者执行预设的翻转动画,极大地丰富了用户体验。 首先,我们来深入理解一下ThreeDLayout的工作原理。它基于Android的自定义视图机制,通过对...
这个“Android旋转效果源码”项目显然是专注于实现类似OpenGL的3D旋转效果,使得应用的界面更加生动有趣。 AndroidManifest.xml是Android应用程序的核心配置文件,它定义了应用的基本属性,如应用名称、权限、启动...
### Headus UVLayout 1.20.3 中文帮助文档关键知识点解析 #### 快捷键概述 本文档提供了Headus UVLayout软件在不同模式下的快捷键介绍,包括CED、ENTERED、WED等模式下的操作命令。通过这些快捷键,用户能够更高效...
2. **Transform3D对象**:在ActionScript中,Transform3D对象提供了进行3D变换的方法,如rotateX(), rotateY() 和 rotateZ(),用于实现3D旋转。 3. **Matrix3D类**:Matrix3D类是实现3D变换的核心,它可以存储和...