应用场景:需要将多个按照顺序排列的View做出整体旋转的动画效果是的,让容器旋转确实可以到达效果,但是由于性能....等需求,不用容器该怎么实现呢?

我们想旋转嘛,让每个View都在ValueAnimator里改变setRotationY不就行了。

final ValueAnimator animator = ValueAnimator.ofInt(0, 180);
animator.setDuration(2000);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {@Overridepublic void onAnimationUpdate(ValueAnimator valueAnimator) {int animatedValue = (int) valueAnimator.getAnimatedValue();for (View view : listViews) {view.setRotationY(animatedValue);}}
});
复制代码

几行代码迅速搞定

这里我们就谈谈这个rotationY的旋转原理了     View的rotationY方法以View的中心点的Y方向为旋转轴旋转。     camera则在该中心点的z轴正方向。     那么可以看见每个View都有自己的camera形成旋转投影效果,所以就会出现多View一起旋转混乱的情况。


有没有办法统一呢?有。那就是设定一个统一的camera位置,让所有View的camera都移动到该位置上,则就相当于一个camera投影不同的View。这个时候旋转View就可以达到整体的效果。

通过setPivotY和setPivotX可以调整camera所在位置。那么这个PivotY和PivotX参考的坐标系到底是在哪?PivotY和PivotX的参考坐标系是View的左上角。

现在思路很清晰了。就是设定一个camera的Y位置,然后通过setPivotY()让所有view的camera都移动到该位置。

具体做法:

  • 以第一个view左上角为参考坐标系,得到camera的Y位置。 cameraY=所有view的height和/2
  • Y值映射到各自的坐标系上。
    PivotY=cameraY-上个view的height
if (isFirst) {isFirst = false;//计算总高度float allHeight = 0;for (View item : listViews) {allHeight += item.getHeight();}//得到camera的Y值float cameraY = allHeight / 2;//将camera的Y值映射到每个View上,并移动到该位置for (int i = 0; i < listViews.size(); i++) {View itemView = listViews.get(i);cameraY = cameraY - (i < 1 ? 0 : listViews.get(i - 1).getHeight());itemView.setPivotY(cameraY);}
}
animator.start();
复制代码

多View统一Camera v1.2相关推荐

  1. 【Android 10 源码】Camera v1 startPreview 流程

    Camera v1 startPreview 起点位于 android.hardware 包下的 Camera 类中,这是老版本的 Camera 预览的起点. 上面这张相机架构图左边就是关于 Came ...

  2. 【自动驾驶】《BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird’s-Eye View Representation》论文阅读笔记

    论文地址:https://arxiv.org/pdf/2205.13542.pdfhttps://arxiv.org/pdf/2205.13542.pdf 代码地址:GitHub - mit-han- ...

  3. Android多媒体学习三:实现自己的Camera

    Android自带的Camera应用虽然可以满足大多数情景,但是其灵活性上还有不足.但是Android允许我们定制自己的Camera. 在Android的hardware包中有一个Camera类.这个 ...

  4. Android Camera 摄像 demo

    google 在Android 5.0推出 Camera2 这个类,用于替换 Camera,但是Camera2要求android sdk 最低版本为 minSdkVersion = 21 (5.0系统 ...

  5. Android之Camera拍照

    一.看看调用时序图 1.拍照命令时序图 2.拍照数据回调时序图 二.看看源码分析 hardware/amlogic/camera/CameraHal.cpp [cpp] view plaincopy ...

  6. Android Camera API 2使用OpenGL ES 2.0和GLSurfaceView对预览进行实时二次处理(黑白滤镜)

    这段时间有点忙,一直没时间写第三篇教程,其实代码很早之前就写好了.本系列教程会有三篇文章讲解Android平台滤镜的实现方式,希望在阅读本文之前先阅读前面两篇文档. 第一篇 Android Camer ...

  7. cesium camera相机系统

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 概括 一.cesium常见的坐标系 二.几种坐标系的转换方法 1.经纬度坐标转世界坐标 2.世界坐标转经纬度 3.弧度和经纬 ...

  8. Android 自定义Camera相机(封装工具类贼简单)

    背景 目前公司的项目都是,针对生物认证来进行一些验证之类的功能,比方说,交互式活体检测,人脸1v1(对比),人脸1vN(搜索).用系统自带的相机?当然是不够用了,不够用那就自定义啦,就像是前几天七夕, ...

  9. 自定义Camera实现头像框效果,并裁剪指定区域合成

    需要一个带框的相机,并且拍好后能合成框和人脸,不过需要人自己凑过去哈哈哈 这两天看了很多博客,然后自己根据自己的要求改了改,基本可以用,调节参数可以获得想要的效果 参考链接在最后面,要是看不懂我的,可 ...

  10. android 相机故障 代码 解决,android – 如何在调用Camera时解决ANR错误?

    我在主菜单中有两个按钮.我按下第一个按钮时调用相机.在这里,我没有遇到任何问题.相机正常工作.拍完照片后,我回到主菜单,再次按下第一个按钮.我在这里得到了这个问题.相机正确调用.但是当我拍照时,我得到 ...

最新文章

  1. 网络教育计算机二级题库2021,2021计算机二级office
  2. P8 控制系统校正与综合-《Matlab/Simulink与控制系统仿真》程序指令总结
  3. 《大话数据结构》简体中文版勘误
  4. 【转】正则表达式简介及在C++11中的简单使用教程
  5. 如何管理和记录 SSIS 各个 Task 的开始执行时间和结束时间以及 Task 中添加|删除|修改的记录数...
  6. [Jarvis OJ - PWN]——Typo(内涵peak小知识)
  7. wordpress index.php 跳转,wordpress点击内容页跳转到其他url的解决方法
  8. Oracle备份还原
  9. springboot 优雅停机_Spring boot 2.3优雅下线,距离生产还有多远?
  10. PHP设计模式——工厂方法
  11. android抖音布局,Android快速集成抖音分享
  12. 全球及中国建筑涂料市场盈利能力分析与产值规模预测报告2022版
  13. 基于android的校园新闻app,移动端校园新闻APP的设计探析
  14. Vue消息列表已读/未读状态实时更新及数据更新set()用法
  15. 可编译易用的模块化nf-HiPAC移植成功
  16. 使用pgadmin3操作数据库 简介,误删数据表格后用Django重新生成表
  17. ActiveMQ 镜像队列Mirrored Queues
  18. win10删除Windows更新和预览的版本,关闭自动更新
  19. 关于7.0去掉Chrome后,平台默认浏览器报错webview not installed的问题
  20. 【GeneXus】在WorkWithPlus中如何定义未被包含的页面属性?

热门文章

  1. spark安装包_Spark基础:Spark On Yarn(上)
  2. 机器学习 深度学习 ai_什么是AI? 从机器学习到决策自动化
  3. 学计算机的大学生买什么U盘,大学生最容易丢的几样东西,最后一件最让人着急,网友:真实了...
  4. 知网搜索论文:如何在知网上查找期刊论文
  5. Python创建二维数组
  6. C# string.Format json格式字符串报错”输入字符串的格式不正确“
  7. 微信公众平台开发,图文回复、access_token生成调用、以及微信SDK的实现(2)
  8. 141.3. 单机安装 CentOS 5 + hadoop-0.20.0
  9. console.log、toString方法与js判断变量类型
  10. 部分关键字--this/extends/super/static/final/abstract/访问权限总结