android camera 动画,Android 使用Camera创建3D动画
在Android中,可以使用android.graphics.Camera这个类进行3D变换
之前更改CameraUI的时候,需要做一个切换前后摄像头的翻转动画,刚开始在网上着了一些翻转动画的代码,合到自己的代码之后,发现并没有达到自己想要的效果,为此纠结了很久,后来凑巧把几份Demo代码揉杂在一起,突然发现达到了理想效果。。晕,逐行阅读代码,原因还是细节处理问题--呵呵
下面贴出关键代码
public class FlipAnimation extends Animation {
private Camera mCamera;
private float centerX;
private float centerY;
private float scale = 0.5f;
public FlipAnimator() {
}
@Override
public void initialize(int width, int height, int parentWidth, int parentHeight) {
super.initialize(width, height, parentWidth, parentHeight);
// 初始化Camera,并得View X和Y轴的中心点坐标
mCamera = new Camera();
centerX = width / 2;
centerY = height / 2;
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
final double radians = Math.PI * interpolatedTime;
float degrees = (float) (180.0 * radians / Math.PI);
if (interpolatedTime >= 0.5f) {
degrees -= 180.f;
}
//利用Matrix 对view进行平移,缩放等变换
final Matrix matrix = t.getMatrix();
camera.save();
// 根据动画播放进度,在Z轴方向进行平移,达到先远离屏幕,在靠近屏幕的效果
camera.translate(0.0f, 0.0f, (float) (300.0 * Math.sin(radians)));
// 围绕X轴进行旋转
camera.rotateX(degrees);
// 围绕Y轴进行旋转,此处是实现上下翻转,因此不要Y轴变换
//camera.rotateY(degrees);
//围绕Z轴进行旋转,此处是实现上下翻转,因此不要Z轴变换
//camera.rotateZ(degrees);
camera.getMatrix(matrix);
camera.restore();
// 下面两行代码是设置旋转中心点为图像正中
matrix.preTranslate(-centerX, -centerY);
matrix.postTranslate(centerX, centerY);
// 对图像进行缩放
matrix.preScale(scale, scale, centerX, centerY);
}
}
由于我需要翻转的是整个屏幕界面,仅仅是上下翻转,会导致翻转的时候上半部分或下半部分超出屏幕(根据动画的方向决定:从上至下/从下至上),动画看起来会很奇怪,因此最重要的是要加上缩小和Z轴平移效果
camera.translate(0.0f, 0.0f, (float) (300.0 * Math.sin(radians)));
matrix.preScale(scale, scale, centerX, centerY);
将View缩在屏幕范围内进行3D变换,看起来perfect(貌似你们看不到,哈哈)
使用动画的方法就简单了
view.startAnimation(new FlipAnimation())就可以了
android camera 动画,Android 使用Camera创建3D动画相关推荐
- CSS3新增属性——过渡和动画(2D属性,3D动画)
目录 CSS3 一.过渡 1. 属性 2. 花费时间 3. 运动曲线 4. 何时开始 二.2D属性 2. translate(移动) 2. rotate(旋转) 3. scale(缩放) 4. tr ...
- 3dmax和python做3d动画_Autodesk 3ds Max 2015(3D动画制作3dsmax2015)官方中文版下载 - 下载吧...
3dsmax2015官方中文版(3dsmax2015)能够为用户提供强大且即购即用的专业级3D动画创建功能,3dsmax2015具有用于3D建模.动画.模拟和渲染的创意工具集,可帮助游戏.电影和运动图 ...
- 如何用python制作三维动画_用Python制作3D动画
很多小伙伴可能不知道,在3D动画甚至电影制作的过程中,Python也在其中扮演了很重要的角色呢! 比如皮克斯的动画片一般使用Maya软件制作,并且流程中使用到了大量的Maya Python插件. 另外 ...
- 关于动画的几种状态表示的含义以及能够使用2d动画表述为什么要使用3d动画表述
transform 四种转换 translate 位置 scale 缩放 rotate 旋转 skew 倾斜 以上四种转换方式是比较特殊的,其实他们都是由matrix 矩阵转换来: animation ...
- css定格动画_使用StopGo创建定格动画
css定格动画 上个月,我们用Krita观看了数字单元动画 . 不过,单元动画只是一种动画,因此本月我们将看一下定格动画. 作为一项附加功能,由于过去几周重点介绍了DIY项目,因此该应用程序产生的动画 ...
- 用python做flash动画_6 款用于创建优秀动画的免费 Flash 编辑器
Sothink SWF Quicker是一款功能完备简单易用的Flash动画制作软件,具有美观易用的用户界面,可以快速的制作出SWF动画,程序默认具有4个浮动的面板,通过他们你可以对所制作的电影或者动 ...
- python 怎么实现3d 动画_python – 使用matplotlib的3D动画
我用了这个例子 http://matplotlib.org/1.4.1/examples/animation/simple_3danim.html 并修改了你的代码: from matplotlib ...
- Android 动画介绍及自定义3D动画效果的基本使用
导语 Android的动画框架包括帧动画.视图动画(又叫补间动画).属性动画.在Android3.0之前,视图动画一家独大,但随之后属性动画框架被推出.相比属性动画,视图动画一个非常大的缺陷就是不具备 ...
- android开发骰子动画,GitHub - jieyou/dice: 一个css3 3d动画效果的色子(或称骰子?)...
dice -- 3d色子(或称骰子?) 一个css3 3d动画效果的色子 完全效果(完全流畅的3d动画.阴影.圆角):Chrome\Firefox\Safari\iOS Safari 6.0+\And ...
最新文章
- sass的继承,混合宏,占位符的用法总结
- Hibernate学习笔记--核心编程
- C语言orders order订单的算法(附完整源码)
- (*长期更新)软考网络工程师学习笔记——Section 5 数据链路层
- 迈向数据科学的第一步:在Python中支持向量回归
- python大神的成长之路_我的Python成长之路
- django+nginx+uwsgi项目部署文档整理
- mysqlserver输入密码后闪退_iOS降级教程:iOS 14 后如何降级到ios13?
- mysql外键可以是空吗_带外键的表列可以为NULL吗?
- Wireshake抓包数据怎么看(一)
- flink知识点总结
- 2008 iis php mysql_2008服务器配置iis7+php+mysql
- .Net平台下安装DotNetBar
- 联想本装系统stop:0X000007B错误[转]
- Unity HDR (高动态范围 )
- WEB通信之 长连接、长轮询(long polling)
- 烟大计算机考研二战,以坚持铺就考研之路——记经济管理学院考研优秀个人程林林...
- 香港银行账户被关,应如何取走余额
- php条件 效率高,PHP高效率写法
- nginx设置域名跳转另一个域名