[Android基础知识]视图动画第二篇,Camera 3D效果
2012-04-10 17:24
323 查看
上一篇文章中,我为大家介绍了在android中自定义视图动画的方法,里面用了一个变换矩阵的方法来进行动画的处理,关于详细的内容,可以参考我的上一篇文章: [Android基础知识]打造自己的动画效果 通过这篇文章里介绍的变换矩阵,我们可以实现大多数的动画效果,不过这种方式,大多实现的是一种2D效果,如果向实现三维空间中的效果又什么方法呢?下面就为大家介绍Camera类,中文意思是摄像头,当然这个指的可不是我们手机上那个照相用的那个摄像头,这是一个逻辑概念,把我们手机的屏幕比作摄像头窗口,透过这个窗口,我们看到里面显示的东西(就是我们应用的界面),当然如果我们从不同的角度来看屏幕中的物体,自然就会呈现出一种立体效果,这里所说的不同角度是什么意思呢,比如桌子上有一个杯子,我们从正面看它是一个样,从后面看又是一个样,从上面看又是另一个样。 这个概念应该不难理解,而Camera类就是用来做这个事情的,来看看下面这段代码: private Camera camera = new Camera(); ....... protected void applyTransformation(float interpolatedTime, Transformation t) { final Matrix matrix = t.getMatrix(); camera.save(); camera.translate(0.0f , 0.0f, (3000 - 3000.0f * interpolatedTime)); camera.rotateY(360 * interpolatedTime); camera.getMatrix(matrix); matrix.preTranslate(-halfWidth, -halfHeight); matrix.postTranslate(halfWidth, halfHeight); camera.restore(); } 复制代码 下面的讲解基于我的上一篇文章的基本概念,如果对前置知识需要了解的话,可以参看上一篇文章。 和上一篇文章类似,首先我们得到了一个变换矩阵,camera.save() 这句话是将当前的摄像头位置保存下来,以便变换进行完成后恢复成原位,接下来调用camera.translate,这个方法接受3个参数,分别是x,y,z三个轴的偏移量,我们这里只将z轴进行了偏移,已开始的偏移是3000,随着时间的推移,这个偏移会越来越小。这就会形成这样一个效果,我们的View从一个很远的地方向我们移过来,越来越近,最终移到了我们的窗口上面~ camera.rotateY(360 * interpolatedTime) 这句话,是给我们的View加上旋转效果,在移动的过程中,视图还会移Y轴为中心进行旋转。 随后的 camera.getMatrix(matrix) ,这个是将我们刚才定义的一系列变换应用到变换矩阵上面,调用完这句之后,我们就可以将camera的位置恢复了,以便下一次再使用。接下来的调用上一篇中已经介绍过了,就不再赘述了~,完成这段代码之后,我们就可以看到3D动画效果拉~ 上个效果图: |
AnimDemo.zip
29.69 KB, 下载次数: 525, 下载积分: e币 -1 元
示例代码
相关文章推荐
- android anim 动画效果 基础知识
- Android基础知识之tween动画效果
- Android基础知识之frame动画效果
- [Android基础知识]打造自己的动画效果
- AndroidUI 视图动画-混合动画效果 (AnimationSet)/动画效果监听
- AndroidUI 视图动画-旋转动画效果 (RotateAnimation)
- Android 动画效果编程基础--Animation
- android基础--overridePendingTransition动画效果无效解决
- AndroidUI 视图动画-混合动画效果 (AnimationSet)/动画效果监听
- android Animation动画效果基础
- AndroidUI 视图动画-缩放动画效果 (ScaleAnimation)
- Android 动画效果(一): 四种动画基础(Alpha、Translate、Rotate、Scale)
- Android 3D旋转动画效果
- 动画效果编程基础--AnimationAndroid
- android 动画效果1 pathMenu效果 (巩固自己的动画知识)
- Android——ViewPager实现3D画廊效果(ViewPager的加载动画)
- android.graphics.Camera 实现简单的3D效果
- android基础笔记——android动画效果:淡入淡出
- android基础知识----延迟和计时效果(handler 、Thread、CountDownTimer )
- 动画效果编程基础--AnimationAndroid