前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【android】用camera实现vi

【android】用camera实现vi

作者头像
py3study
发布2020-01-09 11:25:39
4870
发布2020-01-09 11:25:39
举报
文章被收录于专栏:python3

使用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. @Override
  8. public void initialize(int width, int height, int parentWidth,   
  9. int parentHeight) {   
  10. super.initialize(width, height, parentWidth, parentHeight);   
  11. //初始化中间坐标值 
  12.            mCenterX = width/2;    
  13.            mCenterY = height/2;   
  14.            setDuration(2500);   
  15.            setFillAfter(true);   
  16.            setInterpolator(new LinearInterpolator());   
  17.        }   
  18. @Override
  19. protected void applyTransformation(float interpolatedTime,   
  20.               Transformation t) {   
  21. //         final Matrix matrix = t.getMatrix(); 
  22. //         matrix.setScale(interpolatedTime, interpolatedTime); 
  23. //         //通过坐标变换,把参考点(0,0)移动到View中间 
  24. //         matrix.preTranslate(-mCenterX, -mCenterY); 
  25. //         //动画完成后再移回来 
  26. //         matrix.postTranslate(mCenterX, mCenterY); 
  27. final Matrix matrix = t.getMatrix();   
  28.            camera.save();   
  29.            camera.translate(0.0f, 0.0f, (1300 - 1300.0f * interpolatedTime));   
  30.            camera.rotateY(360 * interpolatedTime);   
  31.            camera.getMatrix(matrix);   
  32.            matrix.preTranslate(-mCenterX, -mCenterY);   
  33.            matrix.postTranslate(mCenterX, mCenterY);   
  34.            camera.restore();   
  35.        }   
  36.     }  

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,

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/08/30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档