广告
返回顶部
首页 > 资讯 > 后端开发 > Python >【android】用camera实现vi
  • 137
分享到

【android】用camera实现vi

androidcameravi 2023-01-31 02:01:42 137人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

   使用Camera实现3D变换效果 最后来简单介绍下Android提供的android.graphics.Camera类,通过该类可以在2D条件下实现3D动画效果,该类可以看做一个视图显示的3D空间,然后可以在里面做各种操作。把上面

 

 使用Camera实现3D变换效果

最后来简单介绍下Android提供的android.graphics.Camera类,通过该类可以在2D条件下实现3D动画效果,该类可以看做一个视图显示的3D空间,然后可以在里面做各种操作。把上面的ViewAnimation修改为如下实现可以具体看看Camera的功能:
 
  1.  class ViewAnimation extends Animation {   
  2.        int mCenterX;//记录View的中间坐标   
  3.        int mCenterY;   
  4.        Camera camera = new Camera();   
  5.        public ViewAnimation() {   
  6.        }   
  7.     
  8.        @Override  
  9.        public void initialize(int width, int height, int parentWidth,   
  10.               int parentHeight) {   
  11.            super.initialize(width, height, parentWidth, parentHeight);   
  12.            //初始化中间坐标值   
  13.            mCenterX = width/2;    
  14.            mCenterY = height/2;   
  15.            setDuration(2500);   
  16.            setFillAfter(true);   
  17.            setInterpolator(new LinearInterpolator());   
  18.        }   
  19.     
  20.        @Override  
  21.        protected void applyTransfORMation(float interpolatedTime,   
  22.               Transformation t) {   
  23. //         final Matrix matrix = t.getMatrix();   
  24. //         matrix.setScale(interpolatedTime, interpolatedTime);   
  25. //         //通过坐标变换,把参考点(0,0)移动到View中间   
  26. //         matrix.preTranslate(-mCenterX, -mCenterY);   
  27. //         //动画完成后再移回来   
  28. //         matrix.postTranslate(mCenterX, mCenterY);   
  29.            final Matrix matrix = t.getMatrix();   
  30.            camera.save();   
  31.            camera.translate(0.0f, 0.0f, (1300 - 1300.0f * interpolatedTime));   
  32.            camera.rotateY(360 * interpolatedTime);   
  33.            camera.getMatrix(matrix);   
  34.            matrix.preTranslate(-mCenterX, -mCenterY);   
  35.            matrix.postTranslate(mCenterX, mCenterY);   
  36.            camera.restore();   
  37.        }   
  38.     }  
camera.translate(0.0f, 0.0f, (1300 - 1300.0f * interpolatedTime))在第一次调用的时候interpolatedTime值为0,相当于把ImageView在Z轴后移1300像素,然后逐步的往前移动到0,同时camera.rotateY(360 * interpolatedTime)函数又把ImageView沿Y轴翻转360度,最终效果如下:
下图是中移动的Ophone的截图,当然,同样兼容android,






--结束END--

本文标题: 【android】用camera实现vi

本文链接: https://www.lsjlt.com/news/187149.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作