车载多屏互动联动动画版本同屏幕大小情况方案设计--众筹项目

news/2024/11/17 5:40:40/

hi,粉丝朋友们:

背景及成果展示

本节带大家来开始学习多屏幕互动的动画版本设计,回忆一下我们已经在之前blog和wms课程中学习了多屏互动的非动画版本如下:

在这里插入图片描述

再来看看今天我们想要实现有动画版本的成果:
在这里插入图片描述

是不是相比之前的没有动画版本体验还是好了太多,下面就来详细设计动画版本的多屏互动怎么实现。

动画拆解过程:

跟手移动过程

在这里插入图片描述

针对拖动画面移动的过程拆解如下:
在这里插入图片描述

动画主体画面:就是task的画面,动画过程中需要屏幕1和屏幕2都有在个task的画面
主屏幕1画面移动情况:
主屏幕1是接受了双指触摸的右边移动了offsetX的距离,这时候屏幕1的Task画面也要跟着向右平移offsetX

主屏幕2画面的移动情况:
主屏幕2的Task画面应该最右边往左边有offsetX的画面,所以左边原点相对屏幕偏移距离就应该是 -(width -offsetX) 注意这里应该是负数哈,因为屏幕最左边才是0

那么这样的话对于画面平移的矩阵变化的平移公式就很好计算了

outMatrix.postTranslate(offsetX, y); //屏幕1
outMatrix.postTranslate(-(width -offsetX), y); //屏幕2

上面就已经清楚了相关的跟手指平移过程设计,接下来看看松开手指后的设计

松手后自动移动过程

其实上一部已经把跟随手指移动的距离offsetX,让两个屏幕画面移动起来了,接下来有可能发生的就是用户移动一定的offsetX后,用户松手了。这个时候就需要对画面进行自动移动处理具体处理规则如下:
在这里插入图片描述

即如果 offsetX > =100则需要触发自动移动到屏幕2
offsetX < 100 则需要触发自动移回到屏幕1
自动移动怎么实现?
这里其实即需要使用到动画来 ,动画播放的主要数值就是变化offsetX的值
如果是自动移动屏幕2,则offsetX -----> 1440(width)
如果是自动移动屏幕1,则offsetX -----> 0(原点)

画面问题

上面其实已经规划设计好了移动动画的流程,但是忽略了一个比较关键问题,那就是屏幕1的Task画面和屏幕2的Task画面从哪里来?

方案1截图画面+Task画面方案

在这里插入图片描述

这里的画面1就是截图Task的画面,有单独的图层SurfaceControl
优点:与Task画面的图层完全独立,画面1和画面2完全独立互不影响
缺点:截图耗时性能差,且可能出现画面1和画面2可能内容不一致情况

方案2都使用Task画面方案

在这里插入图片描述

这种方案采用是对Task的画面图层进行镜像,这样画面1和画面2就相当于公用一个
优点:画面1和画面2完全一致,动画过程中也可以看到画面可能变化过程
缺点:画面1和画面2之间公用一套,所以一画面坐标等修改就会影响另一画面

综合考虑为了良好体验我们选择方案2

相关源码及资料,需要参与众筹项目,可以关注公众私信哈

http://www.ppmy.cn/news/60044.html

相关文章

下一代大数据分布式存储技术Apache Ozone初步研究

文章目录 概述定义特性架构总体架构写数据读数据 部署安装方式安装Docker启动Docker-compose启动企业预置型(On Premise)安装 实践命令行接口Ofs (Hadoop兼容)Recon API 概述 定义 Apache Ozone 官网地址 https://ozone.apache.org/ 最新版本1.3.0 Apache Ozone 官网最新文档地…

Java ---比较器

我们知道基本数据类型的数据&#xff08;除 boolean 类型外&#xff09;需要比较大小的话&#xff0c;之间使用比较运算符即可&#xff0c;但是引用数据类型是不能直接使用比较运算符来比较大小的。那么&#xff0c;如何解决这个问题呢&#xff1f; 在 Java 中经常会涉及到对象…

「业务架构」波特的五力分析教程介绍

波特五力分析模型最早出现在哈佛商学院教授迈克尔E波特1979年发表在《哈佛商业评论》上的文章中。这篇论文的发表在历史上改变了企业、组织甚至国家对战略的理解。自《哈佛商业评论》创刊以来&#xff0c;它被评为十大最具影响力的论文之一。 五力分析可以帮助公司评估行业吸引…

Linux入门2(常用命令)

Linux入门2 Linux常用命令快捷键基础命令文件查看命令文件编辑命令进程管理命令用户管理命令 Linux常用命令 快捷键 Ctrl Alt T打开终端 Ctrl shift 加号 终端字体放大 ctrl 减号 终端字体缩小 基础命令 sudo su 进入管理员目录 exit 返回到用户目录 ls 当前目录下的文…

python使用aiofiles进行异步文件操作

Python是一种非常流行的编程语言&#xff0c;它在文件操作方面也有很好的支持。但是&#xff0c;当需要进行大量文件操作时&#xff0c;传统的同步方式可能会导致程序变得非常缓慢。这时&#xff0c;异步文件操作就成为了一个非常好的选择。在Python中&#xff0c;我们可以使用…

项目中遇见的问题(大文件上传,权限控制,项目管理问题,webpack打包后执行流程)

大文件上传? 前端大文件上传的思路通常是将大文件分割成多个小文件&#xff0c;然后分别上传这些小文件&#xff0c;最终在 服务器端将这些小文件重新组合成完整的大文件。以下是具体的实现思路&#xff1a; 将大文件分割成多个小文件&#xff1a;可以使用File API中的slice()…

头歌--第6关:循环语句嵌套(shell脚本入门——流程控制)

目录 任务描述 代码 任务描述 本关任务&#xff1a;掌握 shell 语句中的循环嵌套的方法和使用场景&#xff0c;输出系统中的可执行文件。 相关知识 循环语句可以在循环内使用任意类型的命令&#xff0c;包括其他循环命令。这种循环叫作嵌套循环&#xff08;nested loop&am…

初识中央处理器CPU

目录 一、CPU功能 1.控制器功能 2.运算器功能 3.功能执行顺序 4.其他功能 二、CPU结构图 1.CPU与系统总线 2.CPU内部结构 3.运算器中的寄存器组 4.控制器中的寄存器组 三、执行指令的过程 1.指令周期的基本概念 2.完整的指令周期流程 3.数据通路 4.指令周期的数据…