多View统一Camera v1.2
我们想旋转嘛,让每个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相关推荐
- 【Android 10 源码】Camera v1 startPreview 流程
Camera v1 startPreview 起点位于 android.hardware 包下的 Camera 类中,这是老版本的 Camera 预览的起点. 上面这张相机架构图左边就是关于 Came ...
- 【自动驾驶】《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- ...
- Android多媒体学习三:实现自己的Camera
Android自带的Camera应用虽然可以满足大多数情景,但是其灵活性上还有不足.但是Android允许我们定制自己的Camera. 在Android的hardware包中有一个Camera类.这个 ...
- Android Camera 摄像 demo
google 在Android 5.0推出 Camera2 这个类,用于替换 Camera,但是Camera2要求android sdk 最低版本为 minSdkVersion = 21 (5.0系统 ...
- Android之Camera拍照
一.看看调用时序图 1.拍照命令时序图 2.拍照数据回调时序图 二.看看源码分析 hardware/amlogic/camera/CameraHal.cpp [cpp] view plaincopy ...
- Android Camera API 2使用OpenGL ES 2.0和GLSurfaceView对预览进行实时二次处理(黑白滤镜)
这段时间有点忙,一直没时间写第三篇教程,其实代码很早之前就写好了.本系列教程会有三篇文章讲解Android平台滤镜的实现方式,希望在阅读本文之前先阅读前面两篇文档. 第一篇 Android Camer ...
- cesium camera相机系统
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 概括 一.cesium常见的坐标系 二.几种坐标系的转换方法 1.经纬度坐标转世界坐标 2.世界坐标转经纬度 3.弧度和经纬 ...
- Android 自定义Camera相机(封装工具类贼简单)
背景 目前公司的项目都是,针对生物认证来进行一些验证之类的功能,比方说,交互式活体检测,人脸1v1(对比),人脸1vN(搜索).用系统自带的相机?当然是不够用了,不够用那就自定义啦,就像是前几天七夕, ...
- 自定义Camera实现头像框效果,并裁剪指定区域合成
需要一个带框的相机,并且拍好后能合成框和人脸,不过需要人自己凑过去哈哈哈 这两天看了很多博客,然后自己根据自己的要求改了改,基本可以用,调节参数可以获得想要的效果 参考链接在最后面,要是看不懂我的,可 ...
- android 相机故障 代码 解决,android – 如何在调用Camera时解决ANR错误?
我在主菜单中有两个按钮.我按下第一个按钮时调用相机.在这里,我没有遇到任何问题.相机正常工作.拍完照片后,我回到主菜单,再次按下第一个按钮.我在这里得到了这个问题.相机正确调用.但是当我拍照时,我得到 ...
最新文章
- 网络教育计算机二级题库2021,2021计算机二级office
- P8 控制系统校正与综合-《Matlab/Simulink与控制系统仿真》程序指令总结
- 《大话数据结构》简体中文版勘误
- 【转】正则表达式简介及在C++11中的简单使用教程
- 如何管理和记录 SSIS 各个 Task 的开始执行时间和结束时间以及 Task 中添加|删除|修改的记录数...
- [Jarvis OJ - PWN]——Typo(内涵peak小知识)
- wordpress index.php 跳转,wordpress点击内容页跳转到其他url的解决方法
- Oracle备份还原
- springboot 优雅停机_Spring boot 2.3优雅下线,距离生产还有多远?
- PHP设计模式——工厂方法
- android抖音布局,Android快速集成抖音分享
- 全球及中国建筑涂料市场盈利能力分析与产值规模预测报告2022版
- 基于android的校园新闻app,移动端校园新闻APP的设计探析
- Vue消息列表已读/未读状态实时更新及数据更新set()用法
- 可编译易用的模块化nf-HiPAC移植成功
- 使用pgadmin3操作数据库 简介,误删数据表格后用Django重新生成表
- ActiveMQ 镜像队列Mirrored Queues
- win10删除Windows更新和预览的版本,关闭自动更新
- 关于7.0去掉Chrome后,平台默认浏览器报错webview not installed的问题
- 【GeneXus】在WorkWithPlus中如何定义未被包含的页面属性?
热门文章
- spark安装包_Spark基础:Spark On Yarn(上)
- 机器学习 深度学习 ai_什么是AI? 从机器学习到决策自动化
- 学计算机的大学生买什么U盘,大学生最容易丢的几样东西,最后一件最让人着急,网友:真实了...
- 知网搜索论文:如何在知网上查找期刊论文
- Python创建二维数组
- C# string.Format json格式字符串报错”输入字符串的格式不正确“
- 微信公众平台开发,图文回复、access_token生成调用、以及微信SDK的实现(2)
- 141.3. 单机安装 CentOS 5 + hadoop-0.20.0
- console.log、toString方法与js判断变量类型
- 部分关键字--this/extends/super/static/final/abstract/访问权限总结