CN112136101B - 为用户界面和动画提供应用程序编程接口的框架 - Google Patents

为用户界面和动画提供应用程序编程接口的框架 Download PDF

Info

Publication number
CN112136101B
CN112136101B CN201980033615.5A CN201980033615A CN112136101B CN 112136101 B CN112136101 B CN 112136101B CN 201980033615 A CN201980033615 A CN 201980033615A CN 112136101 B CN112136101 B CN 112136101B
Authority
CN
China
Prior art keywords
animation
view
node
state
target state
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201980033615.5A
Other languages
English (en)
Other versions
CN112136101A (zh
Inventor
J·A·肖
K·S·麦康伯
J·H·沙法尔
J·S·哈珀
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Apple Inc filed Critical Apple Inc
Publication of CN112136101A publication Critical patent/CN112136101A/zh
Application granted granted Critical
Publication of CN112136101B publication Critical patent/CN112136101B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/04812Interaction techniques based on cursor appearance or behaviour, e.g. being affected by the presence of displayed objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • G06F3/04883Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures for inputting data by handwriting, e.g. gesture or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/802D [Two Dimensional] animation, e.g. using sprites

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • User Interface Of Digital Computer (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本主题技术的具体实施提供了支持创建用户界面(UI)和所述UI内的动画的框架。所述主题技术接收与动画相关的第一信息,所述第一信息包括初始状态、目标状态和动画函数。所述主题技术生成所述目标状态的副本,所述目标状态的所述副本包括所述动画的记录,所述动画的所述记录至少部分地基于与所述动画相关的所述第一信息和与所述动画函数相关的进一步信息。所述主题技术更新所述目标状态的所述副本中与所述动画的中间状态相关的值,所述中间状态介于所述初始状态与所述目标状态之间。此外,所述主题技术提供所述目标状态的所述副本,所述目标状态的所述副本包括与用于渲染所述动画的所述中间状态相关的所述值。

Description

为用户界面和动画提供应用程序编程接口的框架
相关申请的交叉引用
本申请要求2018年6月3日提交的名称为“FRAMEWORK PROVIDING APPLICATIONPROGRAMMING INTERFACE FOR USER INTERFACES AND ANIMATION”的美国临时专利申请序列号62/679890的权益,该申请据此全文以引用方式并入本文并且构成本美国实用新型专利申请的部分以用于所有目的。
技术领域
本说明书整体涉及在具有和/或不具有触摸屏的电子设备上实现用户界面和图形元素的动画。
背景技术
给定的操作系统可为开发人员提供图形和成像框架来创建用于计算机应用程序的图形用户界面(GUI或UI)的“视图”。软件应用程序的用户界面(UI)的复杂性已增加,并且可被实现为处理视图、动画、视频、窗口、画面、事件等以及其他类型的图形相关功能性。
附图说明
本主题技术的一些特征在所附权利要求书中被示出。然而,出于解释的目的,在以下附图中阐述了本主题技术的若干实施方案。
图1示出了根据一个或多个具体实施的包括可以实现本主题系统的电子设备的示例性网络环境。
图2示出了根据一个或多个具体实施的可在电子设备上实现的示例性软件架构。
图3A至图3C示出了根据一个或多个具体实施的用于在电子设备的屏幕上移动图形UI元素的水平位置的示例性动画。
图4A至图4C示出了根据一个或多个具体实施的用于在电子设备的屏幕上内插图形UI元素的动画的示例。
图5A至图5C示出了根据一个或多个具体实施的电子设备的屏幕上的嵌套动画的示例。
图6示出了根据一个或多个具体实施的与定时曲线相关的动画函数的示例。
图7示出了根据一个或多个具体实施的用于动画记录的示例性数据结构。
图8示出了根据一个或多个具体实施的用于在电子设备上执行的生成给定动画的动画记录的示例性过程的流程图。
图9A至图9C示出了根据一个或多个具体实施的由电子设备的触摸屏上的输入手势发起的动画的示例。
图10A至图10C示出了根据一个或多个具体实施的由电子设备的触摸屏上的输入手势发起并且然后由手势控制直到完成的动画的示例。
图11A至图11C概念性地示出了根据一个或多个具体实施的涉及来自父视图和子视图的颜色属性的嵌套动画的示例。
图12示出了根据一个或多个具体实施的视图树和节点树的示例,其中每个树的相应节点之间具有一对一关系。
图13示出了根据一个或多个具体实施的视图树和属性图的示例,其中视图树的节点与属性图的节点之间具有一对n关系。
图14示出了根据一个或多个具体实施的具有各种类型的子节点的视图树的示例,这些子节点来自该视图树的根节点并启用内容的不同视图。
图15示出了根据一个或多个具体实施的具有各种节点的视图树的示例,这些节点利用绑定以便更新包括在该视图树中的节点的一部分中的数据的值。
图16示出了根据一个或多个具体实施的用于在电子设备上执行的生成视图树和对应节点树的示例性过程的流程图。
图17示出了根据一个或多个具体实施的用于在电子设备上执行的生成视图树和对应属性图的示例性过程的流程图。
图18示出了根据一个或多个具体实施的用于涉及节点树和属性图的各种操作的不同示例性代码段。
图19示出了根据一个或多个具体实施的由UI框架提供的UI的图形元素的不同示例性布局。
图20示出了根据一个或多个具体实施的用于在电子设备上执行的接收声明式语法代码并调用命令式代码的示例性过程的流程图。
图21示出了根据一个或多个具体实施的针对用于限定布局的声明式代码和用于改变布局的状态的命令式代码的不同示例性代码段。
图22概念性地示出了根据一个或多个具体实施的利用视图树中的偏好列表来改变UI状态栏的特定视图的状态的示例。
图23概念性地示出了根据一个或多个具体实施的利用视图树中的偏好列表来改变UI的特定视图的大小的示例。
图24示出了根据一个或多个具体实施的用于在电子设备上执行的更新偏好列表的示例性过程的流程图。
图25示出了根据一个或多个具体实施的用于在电子设备上执行的更新与特定视图相关的属性的示例性过程的流程图。
图26示出了根据一个或多个具体实施的用于支持与可在电子设备上执行的不同绘图框架的互操作性的示例性渲染器视图系统2300。
图27示出了根据一个或多个具体实施的用于在电子设备上执行的生成用于渲染视觉特性的命令并将该命令提供给外部绘图框架的示例性过程的流程图。
图28示出了可用来实现本主题技术的一个或多个具体实施的电子系统。
具体实施方式
下面示出的具体实施方式旨在作为本主题技术的各种配置的描述并且不旨在表示本主题技术可被实践的唯一配置。附图被并入本文并且构成具体实施方式的一部分。具体实施方式包括具体的细节旨在提供对本主题技术的透彻理解。然而,本主题技术不限于本文阐述的具体细节,而是可以采用一个或多个其他具体实施来实践。在一个或多个具体实施中,以框图形式示出了结构和部件,以便避免使本主题技术的概念模糊。
本主题系统提供了用于处理在给定电子设备上执行的软件应用程序的图形动画和图形用户界面的操作的框架。框架可以指作为较大软件平台的一部分提供特定功能性以促进软件应用程序的开发的软件环境,并且可提供一个或多个应用程序编程接口(API),开发者可利用所述一个或多个应用程序编程接口来以程序化方式设计用户界面并处理用于此类用户界面的操作,包括图形元素的动画和布局。在一个示例中,该框架提供部件来实现图形的事件驱动的用户界面,该用户界面包括UI元素(例如,窗口、对话框、标签、图像、按钮、菜单、文本字段、选择器、滑块、开关等),处理UI元素和动画的渲染,并且与硬件设备和屏幕缓冲器通信。
例如,如本文所述的框架使开发者能够为计算机应用程序的图形用户界面(GUI)创建“视图”。视图可被理解为给定应用程序的用户界面的可被用户看到的视觉部件。在一些示例中,视图可由用户以某种方式与之进行交互。此外,框架支持具有视图分级结构的用户界面,使得至少一个视图可包括在另一个视图内,这可以进一步用于限定用户界面内的视图的布局和/或与该分级结构内的一组视图相关联的其他属性。如本文进一步讨论的,可提供树结构以表示这样的视图分级结构,在该视图分级结构中在树结构中的相应节点之间建立视图之间的父子关系。
在一个或多个具体实施中,本主题系统提供用户界面(UI)API,该UI API使开发者能够以减少UI异常(例如,漏洞)的方式来创建以动画方式显示手势事件并与该手势事件交互的UI,并且显著减少支持此类动画和/或手势事件所需的代码量。该UI API的部件还提供通过实现将参数向下传递到UI的视图的环境系统以及以与预期UI行为一致的方式将偏好应用于UI的视图的偏好系统来改善UI一致性的特征。出于解释的目的,UI API在本文中被描述为单个API。然而,应当理解,UI API可被实现为多个不同的API,其中一个或多个API提供本文进一步描述的特定功能性集合。
图1示出了根据一个或多个具体实施的包括可以实现本主题系统的电子设备110的示例性网络环境100。然而,并非所有所描绘的部件均可在所有具体实施中使用,并且一个或多个具体实施可包括与图中所示的那些相比附加的或不同的部件。可进行这些部件的布置和类型的变化,而不脱离本文所列出的权利要求的实质或范围。可提供附加的部件、不同的部件或更少的部件。
网络环境100包括电子设备110、服务器120和服务器122,其中服务器120和/或服务器122可包括在服务器组130中。网络106可通信地(直接或间接)将例如电子设备110与服务器120和/或服务器122和/或服务器组130耦接。在一个或多个具体实施中,网络106可以是可包括互联网或可通信地耦接到互联网的设备的互连网络。出于解释的目的,网络环境100在图1中被示出为包括电子设备110、服务器120、服务器122和服务器组130;然而,网络环境100可包括任何数量的电子设备和任何数量的服务器或包括多个服务器的数据中心。
电子设备110可包括触摸屏并且可以是例如便携式计算设备,诸如包括触摸屏的膝上型计算机、包括触摸屏的智能电话、包括触摸屏的外围设备(例如,数字相机、耳机)、包括触摸屏的平板设备、包括触摸屏的可穿戴设备(例如,手表、腕带等)、包括例如触摸屏的任何其他适当设备或者任何具有触控板的电子设备。在一个或多个具体实施中,电子设备110可不包括触摸屏,但可支持触摸屏类似的手势,诸如在虚拟现实环境或增强现实环境中。在一个或多个具体实施中,电子设备110可包括触控板。在图1中,通过举例的方式,电子设备110被描绘成具有触摸屏的平板设备。在一个或多个具体实施中,电子设备110可以是和/或可包括下文相对于图26讨论的电子系统的全部或部分。
电子设备110可实现本主题系统以提供图形用户界面和动画。在一个或多个具体实施中,电子设备110可包括能够支持图形用户界面和动画的框架,可在一个具体实施中的特定软件库中提供这些图形用户界面和动画。例如,电子设备110可实现下文相对于图2进一步讨论的用于实现框架和UI API的示例性软件架构。下文参考以下图进一步讨论经由触摸屏执行的动画和操作的示例:图3A至图3C、图4A至图4C、图5A至图5C、图9A至图9C、图10A至图10C、图11A至图11C、图17、图20A至图20B以及图21A至图21B。
服务器120和/或服务器122可为计算机网络或服务器组130的一部分,诸如在云计算或数据中心实施中。服务器120、服务器122和服务器组130可存储可在电子设备110上访问的数据,诸如照片、音乐、文本、网页和/或其中提供的内容等。在一个或多个具体实施中,电子设备110可支持UI操作,该UI操作涉及物理存储在服务器120、服务器122上和/或服务器组130中的一个或多个服务器上的数据项的表示,诸如图像文件、文本、声音文件、视频文件、应用程序等。
为了提供本文所述的UI API,在图2的以下讨论中描述了根据一个或多个具体实施的实现支持UI和动画的功能性的软件架构。
图2示出了根据一个或多个具体实施的可在电子设备上实现的示例性UI框架200。出于解释的目的,UI框架200被描述为由图1的电子设备110实现,诸如由电子设备110的处理器和/或存储器实现;然而,UI框架200可由任何其他电子设备实现。然而,并非所有所描绘的部件均可在所有具体实施中使用,并且一个或多个具体实施可包括与图中所示的那些相比附加的或不同的部件。可进行这些部件的布置和类型的变化,而不脱离本文所列出的权利要求的实质或范围。可提供附加的部件、不同的部件或更少的部件。
UI框架200包括根进程205,该根进程被配置为管理与UI有关的事件。在一个或多个具体实施中,根进程205可被实现为在电子设备110上运行的应用程序或守护进程。根进程205处理UI框架200中包括的以下三个系统:事务模块210、偏好模块230和环境模块220。
在一个示例中,根进程205接收事件280(例如,手势或触摸输入),然后将事件280传递到事务模块210中并将事件280传递到事件处理程序270。根进程205可与手势处理程序系统(未示出)结合工作以便接收手势相关事件。事务模块210处理和跟踪时间流逝和基于时间的事件(例如,动画),并且还在手势发生时跟踪该手势(例如,更多基于事件且更少基于时间)。事务模块210存储关于发生的当前变化的瞬态信息。在一个示例中,当正在更新视图树时,事务模块210存储关于当前动画的信息。事务模块210将时间值(例如,当前时间或实耗时间)传递到包括在与UI的视图相关的树结构中的特定节点(如下文进一步讨论的),该特定节点可利用该时间值来更新其相关联的视图。
在一个或多个具体实施中,环境模块220隐式地沿树传递参数。如本文进一步讨论的,此类参数可包括例如尺寸参数和/或横向或纵向模式参数。偏好模块230基于从子节点向上传递到父节点的信息来将不同偏好应用于子节点。在一个示例中,偏好可包括与状态栏相关的优选尺寸和特性。
为了管理UI的视图,UI框架200提供视图模块250和节点模块260。如本文进一步讨论的,视图模块250提供包括表示UI的视图分级结构的节点的树结构。该树结构中的节点的示例包括布局相关节点和动画相关节点。
软件架构包括节点模块260,该节点模块提供对应于视图模块250中的视图的持久性数据结构。在一个或多个具体实施中,节点模块260提供具有节点的一对一对应的树结构,该节点镜像由视图模块250提供的树结构。另选地,如本文进一步讨论的,节点模块提供具有1至n个节点的属性图,从而提供视图的树结构的节点与属性图的节点之间的1对n关系。
为了支持动画,UI框架200包括动画模块240,该动画模块提供与在执行动画期间使用的动画相关的信息。动画模块240与视图模块250和事务模块210通信,以提供动画相关信息以便更新由视图模块250提供的树结构的一个或多个视图,并且还从事务模块210接收与时间流逝相关的信息。在一个示例中,可基于定时曲线以动画方式显示动画,该定时曲线限定控制动画随时间推移的进展的函数。动画可使用UI框架200中提供的不同定时函数。在一个示例中,UI框架200中的定时函数通常可由描述定时曲线的函数片段表示。定时函数可用于限定动画在其持续时间内的节奏。在下文的图6中更详细地讨论此类定时函数的示例。此外,内插曲线可用于提供从初始状态内插(例如,混合在一起)到目标状态的动画。
本主题技术的具体实施通过使开发者能够使用通用灵活的构造(例如,Swift结构或“结构”)以编程方式限定动画来促进以简化的方式创建UI。通过使用Swift结构,可以以指示初始状态和目标状态的高级别(例如,声明式)的代码来表示动画。初始状态和目标状态可包括关于与动画相关联的特定视图的长久信息。此外,动画可与手势链接以支持基于时间或独立于时间(例如,仅取决于手势的状态)的手势驱动动画。
图3A至图3C示出了用于在电子设备110的屏幕上移动图形UI元素的水平位置的示例性动画。在图3A中,图形UI元素是初始位置处的图形元素310(例如,图像或另一类型的图形对象),该图形元素在动画的过程中最终移动到目标位置320。如图3C所示,在至少一个具体实施中,动画模块240可提供与动画的初始状态315和目标状态325相关的信息。初始状态315包括图形元素310的初始位置的信息,并且目标状态325包括目标位置320的信息。
在图3B中,动画模块240已更新屏幕上的动画,该屏幕现在示出图形元素310随着动画随时间推移进展而移动到中间位置。在一个或多个具体实施中,动画模块240生成合成数据以用于在动画发生时发送到屏幕。该合成数据可用于表示图3C中的介于初始状态315与目标状态325之间的中间状态317。在一个示例中,动画模块可将与中间状态317相关的信息存储为动画记录。在下文的图7中更详细地讨论动画记录的示例。
在图3B的示例中,动画模块240制作目标状态325的副本来表示中间状态317,并且将值注入到中间状态317中以表示介于初始状态315与目标状态325之间的状态。如上所讨论,节点模块260提供对应于视图分级结构的树结构,其中该树结构包括用于这些视图的节点。在一个示例中,可利用特定注入值来更新中间状态317(其在制作目标状态325的副本之前)的视图树的特定节点。例如,初始状态315具有值x=1,并且目标状态325具有值x=11。在图3B中,中间状态317具有值4,该值被注入中间状态317以更新其视图树中的节点。动画模块240然后可指示中间状态317的视图树更新其自身,以便至少基于节点的更新值在某个不同位置处示出图形元素310。
在一个或多个具体实施中,动画模块240创建动画记录,该动画记录存储动画的特性,例如,1)起始值(例如,0);2)目标值(例如,11);3)动画函数,诸如相关联的动画(例如,表示为特定定时曲线,诸如线性动画、通过输入手势驱动的缓入缓出动画或大致任何动画函数);以及4)用于计算动画的实耗时间的开始时间(例如,用于计算δ或时间偏移)。应当理解,动画记录可具有附加属性,并且在一些具体实施中具有比前述属性更少的属性。
图4A至图4C示出了用于在电子设备110的屏幕上内插图形UI元素的动画的一个示例。该示例涉及在电子设备110的触摸屏上接收多个触摸输入。每个触摸输入发起特定动画,该特定动画将当前位置处的图形元素410移动到与触摸屏上所接收的触摸输入的位置相对应的特定目标位置。在图4A中,图形UI元素是初始位置处的图形元素410(例如,图像或另一类型的图形对象)。触摸输入在时间t1时被接收并且发起第一动画,该第一动画将图形元素410的水平位置朝向与该触摸输入在触摸屏上的位置相对应的目标位置420移动。
在一个示例中,触摸输入被根进程205检测为事件,该根进程将该事件转发到事件处理程序270和事务模块210。事务模块210然后将与该事件相关的信息转发到动画模块240。动画模块240使用与该事件相关的信息并发起第一动画来改变图形元素410在屏幕上的位置。
在图4B中,在自时间t1后的后续时间t2时接收第二触摸输入。当接收到第二触摸输入时,图形元素410位于朝向目标位置420移动的不同水平位置处。发起第二动画,该第二动画旨在将图形元素410的位置朝向与触摸屏上的第二触摸输入的位置相对应的第二目标位置430移动。
为了提供更平滑的过渡并且避免图形元素沿其当前路径的移动的视觉抖动改变,动画模块240通过使用组合逻辑可执行第一触摸输入的第一动画和与最近接收的第二触摸输入相关的第二动画的内插。基于这两个相应动画之间的内插,图形元素410的位置现在得以更新以沿着弯曲路径425朝向对应于第二触摸输入的第二目标位置430移动。在图4C中,图形元素410的位置已沿着弯曲路径425移动更靠近第二目标位置430。
图5A至图5C示出了电子设备110的屏幕上的嵌套动画的示例。在一些情况下,UI框架200支持具有影响与子视图相关联的动画的父视图的动画(或反之亦然)。
在图5A中,父视图包括第一图形元素510(例如,窗口或图形区域),并且子视图包括位于与父视图的第一图形元素510左下对准的初始位置处的第二图形元素520。在一个或多个具体实施中,可以相对于父视图的相对术语来定义与子视图相关的第二图形元素520的动画。例如,子视图包括动画,该动画沿着路径515移动第二图形元素520至与父视图呈顶部中心对准,然后移动到父视图中的目标位置530处呈右下对准。
在图5B中,父视图的第一图形元素510的尺寸减小,并且由于父视图的尺寸减小,第二图形元素520现在位于该父视图顶部的第二位置处。父视图中的目标位置530(对应于上述右下对准)也由于该父视图的尺寸减小而改变,这也改变了路径515,第二图形元素520沿着该路径移动到与父视图右下对准。
在图5C中,父视图中的第一图形元素510的尺寸进一步减小,并且第二图形元素520现在位于沿着路径515移动的第三位置处,该路径由于父视图的尺寸进一步减小而再次改变。子视图的第二图形元素以动画方式显示以朝向父视图中的对应于上述右下对准的目标位置530移动,该位置由于父视图的尺寸进一步减小而再次改变。
在一些具体实施中,多点触摸驱动动画可由动画模块240支持,在该动画模块中接收用于以动画方式显示父视图和子视图的多点触摸手势。例如,可接收缩小父视图的尺寸的第一手势(例如,第一只手的两指捏合),并且第二手势(例如,来自第二只手的轻扫手势)提供用于以动画方式显示子视图的输入。
图6示出了与定时曲线相关的动画函数的示例。给定的动画函数可包括描述定时曲线的函数。更具体地,UI框架200的定时曲线函数可用于限定动画在其从初始状态到目标状态的持续时间内的节奏。
在一个或多个具体实施中,定时曲线可用于限定在整个动画过程中线性发生的动画,使得动画在动画的整个持续时间内以均匀的方式移动。另选地,定时曲线可用于限定非线性地发生的动画,使得该动画可在动画开始时加速并且在动画结束时减速(或反之亦然)。
如图6所示,相应的定时曲线包括线性定时曲线610、缓入定时曲线615、缓出定时曲线620、缓出缓入定时曲线625和缓入缓出定时曲线630。应当理解,可提供其他类型的定时曲线,并且这些定时曲线仍在本公开的范围内。例如,可提供模仿物理模拟或某种其它类型的物理运动诸如弹簧的运动的定时曲线。
图7示出了用于动画记录的示例性数据结构。UI框架200(并且具体地动画模块240)可创建用于存储与给定动画相关的信息的动画记录。可在动画进展期间创建一个或多个动画记录(例如,取决于是否接收到多于一个事件诸如第二触摸输入)。例如,可针对第一触摸输入创建第一动画记录,并且可针对第二触摸输入创建第二动画记录,并且该第一动画记录可用于馈送到第二动画记录中。在涉及多个动画记录的一些情况下,可最终合并此类动画记录。例如,在弹簧动画中,可合并两个不同的动画记录。如图7所示,动画记录700包括起始值710、目标值712、动画函数714和开始时间716。
例如,起始值710可包括表示动画的初始状态(例如,0的位置)的值,起始值710表示动画的目标状态(例如,11的位置)。动画函数714可被表示为特定定时曲线,诸如如上文在图6中所讨论的线性动画或缓入缓出动画。此外,开始时间716可包括用于结合计算实耗时间来计算δ或时间偏移的信息。
图8示出了根据一个或多个具体实施的用于在电子设备110上执行的生成给定动画的动画记录的示例性过程800的流程图。出于解释的目的,本文主要参考图1和图2中的电子设备110,尤其是参考上文在图2中所描述的动画模块240来描述过程800。然而,过程800不限于图1和图2中的电子设备110,并且过程800的一个或多个框(或操作)可由其他合适设备的一个或多个其他部件来执行。进一步出于解释的目的,过程800的框在本文中被描述为顺序地或线性地发生。然而,过程800的多个框可并行地发生。此外,过程800的框不必按所示顺序执行,并且/或者过程800的一个或多个框不必执行和/或可由其他操作替代。
如图8所示,动画模块240接收与动画相关的第一信息,该第一信息包括初始状态、目标状态和动画函数(810)。在一个或多个具体实施中,动画函数对应于时间函数,诸如定时曲线。在另一个示例中,动画函数对应于手势(例如,手势驱动并取决于特征的当前状态)并且不依赖于时间。另选地,动画函数对应于物理模拟,诸如上文在图6中所讨论的弹簧状运动。在一些具体实施中,第一信息还包括动画的开始时间。动画模块240可至少部分地基于当前时间和动画的开始时间来确定实耗时间。
动画模块240生成包括初始状态、目标状态和动画函数的信息的动画的记录(例如,图6中所讨论的动画记录)(812)。动画模块240生成目标状态的副本,其中该目标状态的副本基于动画的记录(814)。
动画模块240更新目标状态的副本中与动画的中间状态相关的值,该中间状态介于初始状态与目标状态之间(816)。
动画模块240提供目标状态的副本,该目标状态的副本包括与用于渲染动画的中间状态相关的值(818)。在一个示例中,可应用内插曲线以至少部分地基于中间状态来将动画从初始状态混合到目标状态。
图9A至图9C示出了由电子设备110的触摸屏上的输入手势发起的动画的示例。在一些情况下,UI框架200支持手势驱动的动画。
在图9A中,在具有图形元素诸如UI的窗口或图形区域的视图910内的第一图形元素915处接收对应于触摸输入手势(例如,轻击)的用户输入。可基于所接收的用户输入来发起动画。
在图9B中,该动画跨触摸屏在水平方向上滑动与不同于第一图形元素915的第二窗口或图形区域相对应的第二图形元素920。在图9C中,该动画完成并且第二图形元素920显示在视图中。在一个示例中,尽管动画是从输入手势发起的,但该动画也可被限定以在规定量的时间(例如,0.3秒)完成。这样,输入手势可用作触发动画开始的事件,并且动画的过程也以规定量的时间完成。另外,应当理解,动画可绑定到特定定时曲线以进一步指定动画发生的速度。
图10A至图10C示出了由电子设备110的触摸屏上的输入手势发起并且然后由手势控制直到完成的动画的示例。在一些情况下,UI框架200支持手势驱动的并且与独立于时间的动画,其中手势的当前状态确定该动画的进展。
在图10A中,在具有第一图形元素1010诸如UI的窗口或图形区域的视图内接收对应于触摸输入的用户输入。可基于所接收的用户输入来发起动画,然后该动画被控制为由手势(诸如跨电子设备110的触摸屏的滑动拖动手势或轻扫)的当前状态所驱动。
在图10B中,手势的移动跨触摸屏在水平方向上滑动与不同于第一图形元素1010的第二窗口或图形区域相对应的第二图形元素1020。在图10C中,在手势已跨触摸屏的显示视图的一部分移动之后完成动画,并且在该视图中单独显示第二图形元素1020。
图11A至图11C概念性地示出了涉及来自父视图和子视图的颜色属性的嵌套动画的示例。在一些情况下,UI框架200支持具有影响与子视图相关联的动画的父视图的动画(或反之亦然)。
在图11A中,父视图1110包括具有色调值和亮度值的颜色属性。父视图1110具有红色的色调值和为1的亮度值。在一些具体实施中,与颜色相关的属性为可动画化的,这意味着此类属性可用于动画中并从一个值变为另一个值。该示例中的父视图1110通过随时间推移改变色调值和/或亮度值来以动画方式显示颜色,这将影响子视图1120中的颜色的动画。还如图所示,子视图1120包括具有橙色值的颜色值和具有值1的亮度值的颜色属性。在该示例中,子视图1120通过改变颜色的亮度值来以动画方式显示颜色。与父视图1110中的颜色相关的属性的值的变化影响子视图1120中的亮度值的动画,如下文进一步讨论的。
在图11B中,父视图1110中的色调值已从红色变为橙色。子视图1120检测父视图1110中色调的变化,并且将该子视图的亮度值从1改变为0.5并将其颜色值更新为橙色。
在图11C中,父视图1110已将其色调值从橙色变为绿色。子视图1120相对于父视图1110中的色调值的变化将其颜色值更新为绿色。这样,子视图1120中的动画相对于父视图1110中发生的动画而被改变。
在一个或多个具体实施中,UI框架200提供表示UI的相应视图的视图节点分级结构。基于该视图节点分级结构,生成表示底层数据结构的对应节点分级结构以便于以持久方式存储属性和/或与此类视图节点相关的其他信息,当视图节点被丢弃和/或用更新的属性重新创建时,这些属性和/或其他信息保留在存储器中。另外,UI框架200提供各种协议来实现下文进一步讨论的不同类型的视图节点。
图12示出了根据一个或多个具体实施的在每个树的相应节点之间具有一对一关系的视图树1220和节点树1250的示例。视图模块250创建应用程序UI 1205的视图树1220,该应用程序UI包括电子设备110的显示器中所示的图像1210(例如,V形图案)和文本1215(例如,“您好”)的视图。
视图树1220包括用于自定义视图节点1230的根节点,该自定义视图节点具有用于布局视图节点1232的子节点。布局视图节点1232具有对应于图像节点1240和标签节点1242的两个相应子节点。在一个示例中,视图树1220表示至少具有对应于根视图的根节点(例如,自定义视图节点1230)的分级结构,该根视图可包括一个或多个子节点。该根视图是整个UI的父视图。在图12的示例中,自定义视图节点1230对应于UI框架200支持的特定类型的视图。给定视图树中的每个节点可对应于特定视图类型诸如自定义视图或布局视图,或者对应于特性诸如颜色、图像、标签等。
为了以持久方式存储与视图树1220相关的信息,节点树1250包括对应于视图树1220中的自定义视图节点1230的根节点1260。节点树1250还包括对应于布局视图节点1232的节点1262、对应于图像节点1240的节点1270和对应于标签节点1242的节点1272。
视图树是短暂的并且被频繁重新创建和丢弃。例如,当接收到事件并改变视图树的状态时,则视图模块250可响应于该事件而创建新的视图树。因此,视图树可被认为是瞬态的,并且在更新时(例如,接收带来变化的输入或事件,诸如事件、通过网络接收的数据、用户输入(例如,手势)以及动画已在运行时的时间变化)重新生成。此外,当针对UI的已改变的部分生成新的视图树时,更新节点树中的节点。
在一个示例中,开发者可调用视图树1220的根节点上的更新函数,这继而调用其所有子节点的更新。对于动画,更新函数发起动画记录的创建,该动画记录存储动画的特性。
在一些具体实施中,UI框架200提供属性图而不是节点树结构(例如,节点树1250),如下文在图13的讨论中进一步讨论的。属性图可支持0至n个输入并且对这些输入应用函数以用于计算输出。该输出可被存储在持久性存储器结构中,并且每当n个输入中的任一个输入被改变时,该函数就被重新运行以生成新输出。
为了为不同类型的视图和/或节点提供支持,软件架构实现各种协议,如进一步讨论的。在一个或多个具体实施中,协议类似于编程语言中的接口。此外,如本文所述的协议对应于Swift语言结构而非对象。以下讨论涉及UI框架200支持的用于创建UI和支持动画的不同类型的协议。
在一个或多个具体实施中,UI框架200提供通常具有视图的基本定义的视图协议以及视图树的节点和节点树的节点可如何互操作。此外,视图协议还包括用于形成视图树的一个或多个节点的函数。以下是对视图协议的子协议(例如,对应于一种类型的视图)的讨论。这些子协议中的每个子协议可包括用于形成视图树的节点的函数的特定具体实施,在该视频树处该函数可接收对应于UI的状态和UI的环境参数的输入,并且该函数在被调用之后提供所生成的对应于该特定视图类型的子节点。
在一个或多个具体实施中,UI框架200提供自定义视图,在该自定义视图处可限定具有一个或多个视图的自定义UI。此外,在一个或多个具体实施中,UI框架200针对图形元素的各种布局提供不同布局视图协议,包括以下各项:用于x轴布局的X堆栈协议、用于y轴布局的Y堆栈协议和用于z轴布局的Z堆栈协议。
在一个或多个具体实施中,UI框架200提供与布局视图协议类似但仅具有单个子的一元布局协议。一元布局协议的一些示例包括对准布局协议和尺寸布局协议。
为了支持动画,在一个或多个具体实施中,UI框架200提供可动画化视图协议,包括动画协议和可动画化协议的子协议。动画协议支持例如基于随时间推移的定时曲线的定时曲线动画(例如,一段时间内的线性或缓入缓出曲线)或物理模拟诸如弹簧动画。可动画化协议为可以动画方式显示的任何特性(例如,可内插值的颜色、数字、矢量以及任何特性)提供支持。
此外,可动画化视图协议提供用于在相应子视图之间和/或在父视图与子视图之间以动画方式显示的组合逻辑。下文接下来是对组合逻辑如何执行的示例的讨论。可针对可动画化视图接收两个事件(例如,第一事件和第二事件)。基于包括起始值、目标值和开始时间值的相应输入值来为每个事件创建相应动画记录。组合逻辑的组合逻辑针对第一事件返回:1)第一有效值(例如,对应于新内插值);以及2)指示动画是否已完成的布尔值。接下来,组合逻辑针对第二事件返回:1)基于作为输入值中的起始值传递的第一有效值的第二有效值;以及2)指示第二动画是否已完成的布尔值。
在一个或多个具体实施中,UI框架200提供事件处理程序协议(例如,用于手势)。此外,在一个或多个具体实施中,UI框架200提供自定义事件处理程序协议,该自定义事件处理程序协议类似于自定义视图协议但用于支持事件。另外,在一个或多个具体实施中,UI框架200包括组合事件处理程序协议,该组合事件处理程序协议为子节点和/或在父节点与子节点之间提供组合逻辑。
图13示出了根据一个或多个具体实施的视图树1320和属性图1350的示例,其中视图树1320的节点与属性图1350的节点之间具有一对n关系。视图模块250创建应用程序UI1305的视图树1320,该应用程序UI包括电子设备110的显示器中所示的图像1310(例如,V形图案)和文本1315(例如,“您好”)的视图。
视图树1320与图12所示的视图树1220相同。例如,视图树1320包括用于自定义视图节点1330的根节点,该自定义视图节点具有用于布局视图节点1332的子节点。布局视图节点1332具有对应于图像节点1340和标签节点1342的两个相应子节点。
属性图1350包括n个节点,每个节点分别表示特性或属性。如图所示,属性图1350包括用于第一属性的属性节点1360、用于第二属性的属性节点1362、用于第三属性的属性节点1364、用于第四属性的属性节点1365和用于第n属性的属性节点1366。属性图1350中的属性节点中的每个属性节点可包括到属性图1350中的相应其他属性节点的一个或多个链接。来自视图树1320的节点中的每个节点可创建属性图1350中的前述属性节点中的一个或多个属性节点,以便将视图树中的特定节点关联到此类属性。因此,当属性图1350中的属性节点被更新时,可通知来自视图树1320的一个或多个节点。
在一个或多个具体实施中,来自视图树1320的节点中的每个节点可具有从属性图1350分配给该节点的特定数量的属性(例如,5至10个不同属性)。在一个示例中,属性图1350中包括的此类属性可包括但不限于与优选尺寸、渲染输出、视图本身(例如,用于指示视图的变化)、动态类型尺寸、位置、尺寸等相关的属性。对应于布局视图的节点可包括该节点的子视图中的每个子视图的尺寸和位置等的属性,并且这些子视图中的每个子视图可包括优选尺寸的属性(其可基于来自父布局视图节点的尺寸和/或位置属性而被约束)。对应于文本的节点可包括用于优选尺寸、动态类型尺寸(例如,用于改变字体大小)等的属性。
在一个具体实施中,可从根节点开始遍历视图树1320,并且可请求每个视图提供对应于一组输入的一组属性和对应于用于对应视图的一组输出的第二组属性。在一个示例中,用于视图树1320中的对应节点的该组输出可被称为显示列表。当提供新输入时(例如,当事件在时间进程内发生时),受新输入影响的每个属性可设置脏位(例如,通过将值改变为“1”)以指示对应属性已基于这些输入中的至少一个输入而改变。然后可从相应的子节点自下而上遍历视图树1320,在该子节点处被标记为脏的属性可基于更新的输入属性发起对相应节点处的相应输出属性的更新(例如,从而改变该节点的对应视图的输出)。
图14示出了根据一个或多个具体实施的具有各种类型的子节点的视图树1470的示例,这些子节点来自视图树1470的根节点并启用内容的不同视图。视图模块250可基于给定输入或条件来创建用于给定应用程序UI的视图树1470,该给定应用程序UI包括用于在电子设备110的显示器上显示的内容的各种视图。
如图所示,视图树1470包括对应于根视图的根节点1475以及各种子节点,包括子节点1476、子节点1477、子节点1478、子节点1480和子节点1481。具体地讲,子节点1476对应于布局视图,该布局视图具有对应于子节点1477和子节点1481的两个相应子节点。如进一步所示,子节点1477对应于第一图像“图像A”的视图,并且子节点1478对应于第二图像“图像B”的视图,这在下文的示例中进一步详细讨论。
在图14的示例中,视图树1470可被实现为由UI框架200启用(例如,开发者提供附加代码)以提供对应于静态内容的子视图或对应于动态内容的子视图(例如,数据驱动的子视图)。对于给定的数据驱动的子视图,UI框架200可使得能够配置子视图可处理的一组数据以及该子视图将如何构造视图以便显示数据。如图14所示,子节点1477和子节点1478对应于下文讨论的根节点1475的相应数据驱动子视图。
在一个具体实施中,子节点1476可接收确定是显示对应于子节点1477的图像还是对应于子节点1478的另一图像的输入。例如,特定子视图可对应于内容的条件视图,该条件视图提供对要输出以用于显示的特定视图的基于条件的选择。对于这样的子视图,在一个示例中,可向该子视图(例如,子节点1476)提供布尔值(例如,条件值)作为输入,该子视图使用该布尔值来确定要输出至少两个相应视图中的哪个视图以用于显示。这样的输入可以是例如已发生对对应于子节点1476的视图的特定部分的选择的指示,该选择作为输入数据被提供给子节点1476。在该示例中,基于该输入,子节点1476基于布尔值来确定显示在子节点1477或子节点1481中的图像中的一个图像,诸如在布尔值为真时显示对应于子节点1477的视图,或者在布尔值为假时显示对应于子节点1478的视图。
又如,内容的条件视图可提供内容的可选视图,在该可选视图中对应的子视图可在条件为真时显示特定视图,但在条件为假时不显示任何视图。例如,这可发生在应用程序中,该应用程序在特定事件已发生(例如,接收新的电子邮件)时提供视图,使得特定的子视图在事件已发生时被提供作为输出以用于显示,但在没有该事件的情况下不显示视图。如图14的示例所示,当满足真条件时,对应于子节点1477的视图可被提供作为输出以用于显示。然而,在该可选视图示例中,对应于子节点1478的视图将不被提供用于显示。
图15示出了根据一个或多个具体实施的具有各种节点的视图树1585的示例,这些节点利用绑定以便更新包括在视图树1585中的节点的一部分中的数据的值。视图模块250可创建用于给定应用程序UI的视图树1585,该给定应用程序UI包括用于在电子设备110的显示器上显示的各种视图。
如图所示,视图树1585包括对应于根视图的根节点1590以及各种子节点,包括子节点1591、子节点1592、子节点1593、子节点1594和子节点1595。在一个具体实施中,可基于与每个节点相关联的绑定信息来建立用于更新视图树1585内的节点的范围。对于可包括可改变的数据的每个节点,绑定信息可包括数据的当前值和更新该数据的值的方式(例如,数据被更新的位置,诸如数据库或临时缓冲器或值)以及该数据的当前值是否已被读取或访问(例如,由应用程序)的指示。当节点具有已更新的数据并且已基于相关联的绑定信息在节点中读取该数据时,可在节点处更新视图树1585以反映更新的数据,同时放弃在视图树1585内的绑定信息未指示数据已被读取或访问的任何其他节点处的更新。
如图15所示,相应绑定信息包括在根节点1590、子节点1592、子节点1593和子节点1594中。在初始时间,相应绑定信息指示(例如,通过具有“假”值)前述节点中没有一个节点具有已被读取的数据。在后续的时间,子节点1594已被读取并且绑定信息被更新(例如,通过具有“真”值)。在另外的后续时间,子节点1594已更新其数据。此时,读取上述节点中的每个节点的绑定信息以确定是否要更新该节点。在该示例中,由于子节点1594包括指示其数据已被读取的绑定信息,因此在子节点1594及其子节点1595上执行更新,而其他节点放弃更新处理。这样,可使用绑定信息来优化对视图树1585的更新。
图16示出了根据一个或多个具体实施的用于在电子设备110上执行的生成视图树(例如,视图树1220)和对应的节点树(例如,节点树1250)的示例性过程1600的流程图。出于解释的目的,本文主要参考图1和图2中的电子设备110,尤其是参考上文在图2中所描述的UI框架200的部件来描述过程1600。然而,过程1600不限于图1和图2中的电子设备110,并且过程1600的一个或多个框(或操作)可由其他合适设备的一个或多个其他部件来执行。进一步出于解释的目的,过程1600的框在本文中被描述为顺序地或线性地发生。然而,过程1600的多个框可并行地发生。此外,过程1600的框不必按所示顺序执行,并且/或者过程1600的一个或多个框不必执行和/或可由其他操作替代。
在一个或多个具体实施中,根进程205可接收用于发起应用程序的命令,该命令被转发至事件处理程序270和/或事务模块210,该事件处理程序和/或事务模块将发起创建针对应用程序的UI的视图的视图树和对应的节点树的操作(1610)。响应于该命令,视图模块250生成与表示应用程序的UI(例如,图12中的应用程序UI 1205)的第一视图分级结构中的根视图相关的根节点(例如,自定义视图节点1230)(1612)。
视图模块250生成该根节点的子节点(例如,布局视图节点1232)以用于包括在该第一视图分级结构中,该子节点对应于第一类型的视图(1614)。该第一类型的视图可包括UI的图形元素的布局。在一些具体实施中,该第一类型的视图包括X轴布局、Y轴布局、Z轴布局和径向布局中的至少一者,这在下文的图19中进一步详细讨论。另选地或结合地,该第一类型的视图可以是以动画方式显示的特性,并且该特性涉及能够内插值的颜色、数值、矢量和特定特性中的至少一者。
视图模块250生成子节点的第一子节点(例如,图像节点1240或标签节点1242)以用于包括在该第一视图分级结构中,并且该第一子节点对应于第二类型的视图(例如,图像或标签等)(1616)。节点模块260至少部分地基于该视图分级结构来生成第二分级结构(例如,图12中的节点树1250),该第二分级结构包括对应于来自该视图分级结构的每个节点的相应节点,并且这些相应节点对应于来自该视图分级结构的每个节点的持久性数据结构(1618)。
图17示出了根据一个或多个具体实施的用于在电子设备110上执行的生成视图树(例如,视图树1320)和对应的属性图(例如,属性图1350)的示例性过程1700的流程图。出于解释的目的,本文主要参考图1和图2中的电子设备110,尤其是参考上文在图2中所描述的UI框架200的部件来描述过程1700。然而,过程1700不限于图1和图2中的电子设备110,并且过程1700的一个或多个框(或操作)可由其他合适设备的一个或多个其他部件来执行。进一步出于解释的目的,过程1700的框在本文中被描述为顺序地或线性地发生。然而,过程1700的多个框可并行地发生。此外,过程1700的框不必按所示顺序执行,并且/或者过程1700的一个或多个框不必执行和/或可由其他操作替代。
在一个或多个具体实施中,根进程205可接收用于发起应用程序的命令,该命令被转发至事件处理程序270和/或事务模块210,该事件处理程序和/或事务模块将发起创建针对应用程序的UI的视图的视图树和对应的节点树的操作(1710)。响应于该命令,视图模块250生成与表示应用程序的UI(例如,图13中的应用程序UI 1305)的第一视图分级结构中的根视图相关的根节点(例如,自定义视图节点1330)(1712)。视图模块250创建与对应于该根视图的根节点相关的一个或多个属性(1714)。在一个示例中,此类属性被存储为属性图(例如,属性图1350)中的相应节点。
视图模块250生成该根节点的子节点(例如,布局视图节点1332)以用于包括在该第一视图分级结构中,该子节点对应于第一类型的视图(1716)。视图模块250创建可存储在属性图中的与该子节点相关的一个或多个属性(1718)。视图模块250生成子节点的第一子节点(例如,图像节点1340或标签节点1342)以用于包括在该第一视图分级结构中,并且该第一子节点对应于第二类型的视图(例如,图像或标签等)(1720)。视图模块250创建可存储在属性图中的与该第一子节点相关的一个或多个属性(1722)。
图18示出了涉及节点树和属性图的各种操作的不同示例性代码段。这些代码段可由开发者提供并被编译以供UI框架200执行。此外,这些代码段可调用由UI框架200提供的一个或多个API。
如图18所示,提供了具有用于创建视图树的节点的示例性代码的代码段1810。代码段1840被示出为具有用于启动应用程序并创建视图树的示例性代码。此外,代码段1880被示出为具有用于发起应用程序并创建属性图的示例性代码。
图19示出了根据一个或多个具体实施的由UI框架200提供的UI的图形元素的不同示例性布局。如上所述,UI框架200支持为图形元素提供布局的各种方式。如图所示,为图形元素沿着x轴(例如,水平地)的布局提供X堆栈布局1910,为图形元素沿着y轴(例如,垂直地)的布局提供Y堆栈布局1930,并且为图形元素沿着z轴的布局提供Z堆栈布局1950。此外,为径向布置中的图形元素的布局提供径向布局1970。
UI框架200支持图形元素的以声明式代码(例如,使用声明式语法编写的代码)表示的布局,从而通过使开发者能够更容易地限定特定布局的结构而不需要限定应用程序的控制流而潜在地减轻开发者的负担。基于声明式代码,API调用对应的命令式代码来执行布局函数。因此,UI框架200使开发者能够编写对应于图形元素布局的高级别描述的声明式代码,并且UI框架200自动调用可由电子设备110更快执行的低级别命令式代码(例如,使用命令式语法编写的代码)。与声明式代码相比,可使用命令式语法编写命令式代码,该命令式语法使用陈述来改变应用程序的状态。下文相对于图21更详细地讨论包括声明式代码和命令式代码的示例性代码段。
图20示出了根据一个或多个具体实施的用于在电子设备110上执行的接收声明式语法代码并调用命令式代码的示例性过程2000的流程图。出于解释的目的,本文主要参考图1和图2中的电子设备110,尤其是参考上文在图2中所描述的UI框架200的部件来描述过程2000。然而,过程2000不限于图1和图2中的电子设备110,并且过程2000的一个或多个框(或操作)可由其他合适设备的一个或多个其他部件来执行。进一步出于解释的目的,过程2000的框在本文中被描述为顺序地或线性地发生。然而,过程2000的多个框可并行地发生。此外,过程2000的框不必按所示顺序执行,并且/或者过程2000的一个或多个框不必执行和/或可由其他操作替代。
UI框架200接收包括与描述UI的图形元素的布局的操作相关的声明式语法的代码(2010)。在一个示例中,UI框架200在调用命令式代码之前执行包括声明式语法的代码。UI框架200至少部分地基于所接收的代码的声明式语法来调用命令式代码以执行描述UI的图形元素的布局的操作(2012)。响应于调用命令式代码,UI框架200执行该命令式代码,其中该命令式代码在少于执行包括声明式语法的代码的时间量内执行。
图21示出了用于限定布局的声明式代码和用于改变布局的状态的命令式代码的不同示例性代码段。这些代码段可由开发者提供并被编译以供UI框架200执行。此外,这些代码段可调用由UI框架200提供的一个或多个API。
如图21所示,提供了具有声明式语法示例性代码的代码段2110,该示例性代码用于限定布局,包括10×10尺寸框内的图形元素(例如,V形图案)。代码段2140也被示出为具有命令式语法示例性代码,该示例性代码在被执行时改变布局的状态。
在一个或多个具体实施中,UI框架200提供偏好系统(例如,如偏好模块230所提供的)以允许视图树中的父视图确定与来自该父视图的一个或多个子视图的UI特性相关的偏好。偏好列表从父视图向下传递到其子,其中每个子视图可写下包括在该偏好列表中的偏好,然后这些偏好被传回父视图以确定预期UI行为。
图22概念性地示出了利用视图树中的偏好列表来改变UI状态栏的特定视图的状态的示例。在一些情况下,视图树中的父视图可能想要对自身作出某些改变。然而,为了绘制父视图,该父视图询问其子视图关于它们的属性。
对于具有用于状态栏的至少一个视图和用于UI的不同部分(例如UI的主图形区域)的另一视图的给定应用程序,该应用程序可具有用于另一视图的暗背景或亮背景。基于该视图,该应用程序可能想要改变状态栏的颜色。例如,对于主要是浅色的应用程序,该应用程序可能希望暗色状态栏和/或文本在顶部是白色的,而主要是暗色的应用程序可能希望状态栏是浅色的。
如图22A所示,视图树2210包括应用程序的根视图节点2220、应用程序的主图形区域2232的第一子视图节点2222以及应用程序的状态栏2230的第二子视图节点2224。
如进一步所示,为了更新状态栏2230,根视图节点2220可调用由UI框架200提供的更新函数,该更新函数发起将偏好列表2240向下传递到这些子视图节点中的每个子视图节点。在向下传递偏好列表2240以遍历视图树2210时,特定子视图节点可利用偏好写入视图(未示出)来将值写入偏好列表中的偏好。另选地,特定子视图可直接写入到偏好列表2240中以更新特定偏好。
作为响应,偏好模块230将偏好列表2240发送到第二子视图节点2224。在一个具体实施中,偏好列表2240包括针对优选尺寸、状态栏和颜色的偏好密钥。在一个示例中,偏好模块230可与环境模块220通信以协调偏好列表的发送。具体地讲,偏好模块230可向环境模块220发送向第二子视图节点2224发送偏好列表2240的请求(例如,而不是偏好模块230直接发送偏好列表2240)。
在图22B中,第二子视图节点2224接收偏好列表2240作为根视图节点2220所调用的更新函数的一部分。为了更新对状态栏的偏好,第二子视图节点2224将特定密钥(例如,状态栏颜色)和该特定密钥的值(例如,暗或亮)作为一组参数传递到用于调用偏好写入视图的函数。第二子视图节点2224的这个动作创建偏好写入视图,该偏好写入视图也创建相关联的偏好写入视图节点。第二子视图节点2224然后可调用该偏好写入视图上的更新函数。
作为响应,该偏好写入视图可检查偏好列表2240并确定偏好列表2240的密钥是否匹配先前提供的特定密钥(例如,状态栏颜色)。由于该特定密钥与偏好列表2240中包括的密钥中的一者匹配,因此该偏好写入视图将更新偏好列表2240中的状态栏颜色的密钥的值。在一些具体实施中,偏好列表2240最初包括每个密钥的默认值。该偏好写入视图现在将状态栏颜色的值注入到偏好列表中以包括该特定密钥值并更新默认值。然后,偏好列表2240被向上传递到根视图节点2220,该根视图节点读取偏好列表2240中的状态栏颜色的更新值并将状态栏2230的视图更新为暗色。
在一个或多个具体实施中,当通过视图树2210的给定节点设置偏好时,在调用更新函数的父节点与在偏好列表中写入偏好的子节点之间建立指向该节点的指针。在该示例中,由于与第二子视图节点2224相关联的前述偏好写入视图将值写入到偏好列表2240,因此在针对该偏好写入视图的节点与寻求偏好的特定节点(例如,对应于根视图节点2220的父节点)之间建立关系。此后,每当更新函数被特定节点调用时,偏好写入视图(或第二子视图节点2224)将向询问偏好的该特定节点发送消息,使得该特定节点可更新其自身,这使得该特定节点重新评估该偏好并获得该偏好的新值。例如,如果状态栏视图(例如,第二子视图节点2224)从亮变为暗,第二子视图节点2224可将消息向上发送到根视图节点2220,该根视图节点然后将使得对应于根视图节点2220的视图重新评估视图树2210以取回状态栏颜色的新偏好值,以便更新状态栏2230的颜色。
另选地,在涉及使用属性图的一个或多个具体实施中,给定视图树的属性以及父节点与子节点之间的关系的初始化在偏好列表向下传递到子节点之前发生。因此,在子节点与父节点之间建立指针的上述讨论不会在子节点写入偏好密钥之后发生。
此外,在一些具体实施中,应当理解,可将附加偏好添加到偏好列表2240。例如,如果存在视图树的特定视图节点想要设置为偏好的特性,则该视图节点还可添加附加偏好。
在一些具体实施中,偏好模块230提供特殊的组合器规则来解决偏好之间的潜在冲突。例如,当第一视图写入对亮状态栏的偏好并且第二视图写入对暗状态栏的偏好时,可利用规则来确定如何一起评估多个值以获得对该偏好的单个值。在该示例中,当偏好彼此冲突时,规则可提供亮状态栏。
图23A概念性地示出利用视图树中的偏好列表来改变UI的特定视图的尺寸的一个示例。图23的示例涉及更新对特定图形UI元素的优选尺寸的偏好。
在一个或多个具体实施中,优选尺寸涉及用于智能地决定如何划分在应用程序中显示的图形元素之间的空间的偏好。例如,对于给定的布局诸如X堆栈,该X堆栈可包括在表视图中分配给该X堆栈的特定量的空间。响应于X堆栈中图形元素中的一者(例如,文本的量)的变化,该图形元素的优选尺寸的值可被写入到偏好列表中以更新图形元素的视图的尺寸。视图树的根节点然后可要求来自其子节点的更新以在屏幕上绘制X堆栈。
如图23A所示,视图树2310包括应用程序的根视图节点2320、应用程序的X堆栈布局视图的第一子视图节点2322以及应用程序的状态栏(未示出)的第二子视图节点2324。第一子视图节点2322包括分别对应于X堆栈布局视图中的图形元素2350、2352和2354(例如,图像、短文本、长文本)的子视图节点2325、2326和2327。
响应于更新图形元素2354的文本的事件(例如,将较长文本改变为较短文本),根视图节点2320可调用由UI框架200提供的更新函数,该更新函数发起将偏好列表2330向下传递到这些子视图节点中的每个子视图节点。尽管未示出,但另选地,在一些具体实施中,第一子视图节点2322可替代地直接在其子视图节点2325、2326和2327上调用更新函数。
作为响应,偏好模块230将偏好列表2330发送到第一子视图节点2322。在一个具体实施中,偏好列表2330包括针对优选尺寸、状态栏和颜色的偏好密钥。偏好列表2330中的密钥中的每个密钥可具有如偏好值2335中所示的特定值。例如,优选尺寸密钥可具有值“尺寸1”,状态栏密钥可具有值“亮”,并且颜色密钥可具有值“颜色123”。如图23A中进一步所示,第一子视图节点2322接收偏好列表2330作为根视图节点2320所调用的更新函数调用的一部分。第一子视图节点2322可将偏好列表2330转发到子视图节点2325、2326和2327中的每一者。
为了响应于改变的文本更新对优选尺寸的偏好,子视图节点2327将特定密钥(例如,优选尺寸)和该特定密钥的值(例如,由于文本更短,比当前尺寸更小的尺寸)作为一组参数传递到用于调用偏好写入视图的函数。子视图节点2327的这个动作创建偏好写入视图,该偏好写入视图也创建相关联的偏好写入视图节点。子视图节点2327然后可调用偏好写入视图上的更新函数。作为响应,偏好写入视图可检查偏好列表2330并确定偏好列表2330的密钥是否匹配先前提供的特定密钥(例如,优选尺寸)。偏好写入视图更新偏好列表2330中图形元素2354的优选尺寸的密钥的值。在更新该值之后,偏好列表2330中的密钥中的每个密钥可具有如优先值2335中所示的特定值。例如,如图23B所示,优选尺寸密钥现在可以是更新的值“尺寸2”,而状态栏密钥和颜色密钥的值未改变。如图23B所示,偏好列表2330然后被向上传递到根视图节点2020,该根视图节点读取偏好列表2330中的优选尺寸密钥的更新值并更新X堆栈布局的视图以具有不同尺寸的图形元素2354以适应较短文本。
在一些具体实施中,偏好模块230提供特殊的组合器规则来解决偏好之间的潜在冲突。例如,对于不同的优选尺寸,偏好模块230可将优选尺寸相加在一起取这些优选尺寸的平均值,或选择这些优选尺寸中的最大值等,以确定父的优选尺寸偏好。
图24示出了根据一个或多个具体实施的用于在电子设备110上执行的更新偏好列表的示例性过程2400的流程图。出于解释的目的,本文主要参考图1和图2中的电子设备110,尤其是参考上文在图2中所描述的UI框架200的部件来描述过程2400。然而,过程2400不限于图1和图2中的电子设备110,并且过程2400的一个或多个框(或操作)可由其他合适设备的一个或多个其他部件来执行。进一步出于解释的目的,过程2400的框在本文中被描述为顺序地或线性地发生。然而,过程2400的多个框可并行地发生。此外,过程2400的框不必按所示顺序执行,并且/或者过程2400的一个或多个框不必执行和/或可由其他操作替代。图24中的示例性过程2400讨论了使用偏好列表来更新视图树的父视图节点和子视图节点之间的偏好的具体实施。
在一个或多个具体实施中,UI框架200从视图分级结构的父节点发送与偏好列表相关的信息,该偏好列表包括与UI的相应属性相对应的偏好密钥(2410)。UI框架200在该父节点的子节点处接收与该偏好列表相关的信息(2412)。
UI框架200在该子节点处将来自偏好列表的特定偏好密钥更新为特定值,该特定偏好密钥与UI的属性相关(2414)。在一个示例中,在更新之后,可生成子节点至父节点之间的从属关系(例如,指针)的与UI的属性相关的指示,其中该指示可用于对UI的属性的后续更新。另外,UI框架200在子节点更新了特定偏好密钥之后将包括更新的特定偏好密钥的偏好列表发送到父节点(2416)。此外,UI框架200在父节点处至少部分地基于从子节点发送的更新的特定偏好密钥来更新UI的属性。
在一个示例中,在某后续时间时,UI框架200在子节点处将特定偏好密钥从特定值更新为不同值。响应于子节点将特定偏好密钥更新为不同值,UI框架200在父节点处至少部分地基于该不同值以及对子节点与父节点之间的从属关系的指示来更新UI的属性。
图25示出了根据一个或多个具体实施的用于在电子设备110上执行的更新与特定视图相关的属性的示例性过程2500的流程图。出于解释的目的,本文主要参考图1和图2中的电子设备110,尤其是参考上文在图2中所描述的UI框架200的部件来描述过程2500。然而,过程2500不限于图1和图2中的电子设备110,并且过程2500的一个或多个框(或操作)可由其他合适设备的一个或多个其他部件来执行。进一步出于解释的目的,过程2500的框在本文中被描述为顺序地或线性地发生。然而,过程2500的多个框可并行地发生。此外,过程2500的框不必按所示顺序执行,并且/或者过程2500的一个或多个框不必执行和/或可由其他操作替代。图25中的示例性过程2500讨论了使用属性图来初始化属性并建立父节点与子节点之间的关系的具体实施。
在一个或多个具体实施中,UI框架200初始化与表示用户界面(UI)的视图分级结构相关的一组属性,该视图分级结构包括父节点和子节点(2510)。在一个示例中,初始化该组属性创建属性图,该属性图包括与来自视图分级结构的视图节点中的每个视图节点的属性相关的相应节点。属性图中节点中的每个节点可具有到一个或多个其他属性节点的链接以指示相应属性之间的从属关系。
在属性图用于更新属性的示例中,可直接更新来自该属性图的特定属性节点。UI框架200更新来自该组属性的特定属性(2512)。在一个示例中,该特定属性可对应于与来自视图分级结构的子视图节点相关的属性节点。基于对子视图的属性的更新,对与父视图相关的属性节点的改变可基于对子视图的属性的更新而发生。
为了提供与现有绘图框架(例如,UI工具包、应用程序工具包、Metal等)的完全互操作性,UI框架200提供可扩展的渲染器视图系统以用于使视图节点能够绘制它们自身。在一个或多个具体实施中,每个视图节点可将其自身转换成与给定外部绘图框架兼容的绘图命令。
图26示出了用于支持与可在电子设备110上执行的不同绘图框架的互操作性的示例性渲染器视图系统2600。
在一个或多个具体实施中,渲染器视图系统是促进与外部绘图框架的互操作性的可扩展绘图系统。绘图框架的一些示例包括:1)UI工具包(iOS),其使用在树结构中建模的持久类别;2)应用程序工具包(MacOS),其也使用在树结构中建模的持久类别;3)Metal(iOS和MacOS),其在帧缓冲器中提供低水平GPU绘图,通常对于开发者来说更难编码,但是可能带来更快的渲染,并且发送命令式绘图命令而不是构建用于渲染视图的分级结构;和/或大致任何绘图框架;以及4)AR工具包,其使得能够在2D环境中进行3D渲染并用于2D和3D应用程序中。因此,应当理解,渲染器视图系统2600可支持任何类型或数量的绘图框架,并且仍然在本主题技术的范围内。
如图26所示,渲染器视图系统2600包括调用由UI框架2620提供(例如,由UI框架200提供)的函数的应用程序2610。UI框架2620将函数调用转换成与在渲染器框架2630中提供的特定绘图框架兼容的命令。
在一个或多个具体实施中,给定视图树中的每个节点知道如何将其自身转换成与来自外部绘图框架的绘图命令兼容的格式。例如,结合用于动画、手势等的视图树结构和节点树结构执行的操作最终被深化为知道如何绘制其自身(例如,对应于用于绘制其自身的特定代码)的标签、图像或颜色。
在一个或多个具体实施中,渲染器视图系统2600将单独的树分级结构用于称为渲染器视图树的渲染器视图。该渲染器视图树可以是比上述节点树结构更稀疏的树,因为没有实际绘制UI框架中的大多数视图。例如,自定义视图不绘制或渲染任何内容,并且仅创建进行绘制和渲染的其他视图。例如,布局视图不进行绘制或渲染,并且仅计算实际进行绘制的特定视图的帧。渲染器视图树可包括用于根的一个节点和针对进行绘制的视图的相应节点。此外,在一个示例中,通过以下方式指示渲染器视图树对自己进行绘制:1)更新特定绘图框架(例如,UI工具包或应用程序工具包)使用的特性,或者2)发送针对不同框架(例如,Metal)的渲染命令。
图27示出了根据一个或多个具体实施的用于在电子设备110上执行的生成用于渲染视觉特性的命令并将该命令提供给外部绘图框架的示例性过程2700的流程图。出于解释的目的,本文主要参考图1、图2和图24中的电子设备110,尤其是参考上文在图24中所描述的渲染器视图系统2400的部件来描述过程2700。然而,过程2700不限于图1、图2和图24中的电子设备110,并且过程2700的一个或多个框(或操作)可由其他合适设备的一个或多个其他部件来执行。进一步出于解释的目的,过程2700的框在本文中被描述为顺序地或线性地发生。然而,过程2700的多个框可并行地发生。此外,过程2700的框不必按所示顺序执行,并且/或者过程2700的一个或多个框不必执行和/或可由其他操作替代。
UI框架2420接收与用户界面(UI)的视觉特性相关的信息,该视觉特性包括标签、图像或颜色中的至少一者(2710)。UI框架2420确定外部绘图框架来渲染UI的视觉特性(2712)。
基于所确定的外部绘图框架,UI框架2420生成用于渲染视觉特性的命令,所生成的命令呈与该外部绘图框架兼容的格式(2714)。UI框架2420向该外部绘图框架提供所生成的命令以用于渲染UI的视觉特性(2716)。
如上所述,本技术的一个方面在于采集和使用得自具体和合法来源的数据,以改善向用户递送其可能感兴趣的启发内容或任何其他内容。本公开设想,在一些实例中,该所采集的数据可包括唯一地识别或可用于识别具体人员的个人信息数据。此类个人信息数据可包括人口统计数据、基于位置的数据、在线标识符、电话号码、电子邮件地址、家庭地址、与用户的健康或健身级别相关的数据或记录(例如,生命特征测量、药物信息、锻炼信息)、出生日期或任何其他个人信息。
本公开认识到在本实用新型技术中使用此类个人信息数据可用于使用户受益。例如,个人信息数据可用于递送用户根据其偏好可能较感兴趣的目标内容。因此,使用此类个人信息数据使得用户能够对所递送的内容具有更大的控制。此外,本公开还预期个人信息数据有益于用户的其他用途。例如,健康和健身数据可根据用户的偏好来使用以提供对其总体健康状况的见解,或者可用作对使用技术来追求健康目标的个体的积极反馈。
本公开设想负责收集、分析、公开、传输、存储或其他使用此类个人信息数据的实体将遵守既定的隐私政策和/或隐私实践。具体地,将期望此类实体实现和一贯地应用一般公认为满足或超过维护用户隐私的行业或政府所要求的隐私实践。关于使用个人数据的此类信息应当被突出地并能够被用户方便地访问,并应当随数据的采集和/或使用变化而被更新。用户的个人信息应被收集仅用于合法使用。另外,此类收集/共享应仅发生在接收到用户同意或在适用法律中所规定的其他合法根据之后。此外,此类实体应考虑采取任何必要步骤,保卫和保障对此类个人信息数据的访问,并确保有权访问个人信息数据的其他人遵守其隐私政策和流程。另外,这种实体可使其本身经受第三方评估以证明其遵守广泛接受的隐私政策和实践。此外,应针对便采集和/或访问的特定类型的个人信息数据调整政策和实践,并使其适用于适用法律和标准,包括可用于施加较高标准的辖区专有的具体考虑因素。例如,在美国,对某些健康数据的收集或获取可能受联邦和/或州法律的管辖,诸如健康保险流通和责任法案(HIPAA);而其他国家的健康数据可能受到其他法规和政策的约束并应相应处理。
不管前述情况如何,本公开还预期用户选择性地阻止使用或访问个人信息数据的实施方案。即本公开预期可提供硬件元件和/或软件元件,以防止或阻止对此类个人信息数据的访问。例如,就广告递送服务而言,本实用新型技术可被配置为在注册服务期间或之后任何时候允许用户选择“选择加入”或“选择退出”参与对个人信息数据的收集。在另一示例中,用户可以选择不为目标内容递送服务提供情绪相关数据。又如,用户可选择限制情绪相关数据被保持的时间长度,或完全阻止基础情绪状况的开发。除了提供“选择加入”和“选择退出”选项外,本公开设想提供与访问或使用个人信息相关的通知。例如,可在下载应用时向用户通知其个人信息数据将被访问,然后就在个人信息数据被应用访问之前再次提醒用户。
此外,本公开的目的是应管理和处理个人信息数据以最小化无意或未经授权访问或使用的风险。一旦不再需要数据,通过限制数据收集和删除数据可最小化风险。此外,并且当适用时,包括在某些健康相关应用程序中,数据去标识可用于保护用户的隐私。可在适当时通过移除标识符、控制所存储数据的量或特异性(例如,在城市级别而不是在地址级别收集位置数据)、控制数据如何被存储(例如,在用户间汇集数据)和/或其他方法诸如差异化隐私来促进去标识。
因此,虽然本公开广泛地覆盖了使用个人信息数据来实现一个或多个各种所公开的实施方案,但本公开还预期各种实施方案也可在无需访问此类个人信息数据的情况下被实现。即,本实用新型技术的各种实施方案不会由于缺少此类个人信息数据的全部或一部分而无法正常进行。例如,可基于汇集的非个人信息数据或绝对最低数量的个人信息,诸如仅在用户设备上处理的内容或可用于内容递送服务的其他非个人信息,来选择内容并递送给用户。
图28示出了可用来实现本主题技术的一个或多个具体实施的电子系统2800。电子系统2800可以是图1所示的电子设备110和/或服务器120和/或可为其一部分。电子系统2800可包括各种类型的计算机可读介质以及用于各种其他类型的计算机可读介质的接口。电子系统2800包括总线2808、一个或多个处理单元2812、系统存储器2804(和/或缓存器)、ROM 2810、永久性存储设备2802、输入设备接口2814、输出设备接口2806以及一个或多个网络接口2816,或它们的子集及变型形式。
总线2808总体表示通信地连接电子系统2800的许多内部设备的所有系统、外围设备以及芯片组总线。在一个或多个具体实施中,总线2808将一个或多个处理单元2812与ROM2810、系统存储器2804和永久性存储设备2802通信地连接。一个或多个处理单元2812从这些各种存储器单元检索要执行的指令和要处理的数据,以便执行本主题公开的过程。在不同的具体实施中,一个或多个处理单元2812可以是单个处理器或者多核处理器。
ROM 2810存储一个或多个处理单元2812以及电子系统2800的其他模块所需的静态数据和指令。另一方面,永久性存储设备2802可以是读写存储器设备。永久性存储设备2802可以是即使在电子系统2800关闭时也存储指令和数据的非易失性存储器单元。在一个或多个具体实施中,海量存储设备(诸如,磁盘或光盘及其相应盘驱动器)可被用作永久性存储设备2802。
在一个或多个具体实施中,可移除存储设备(诸如,软盘、闪存驱动器及其相应盘驱动器)可被用作永久性存储设备2802。与永久性存储设备2802一样,系统存储器2804可以是读写存储器设备。然而,与永久性存储设备2802不同,系统存储器2804可以是易失性读写存储器,诸如随机存取存储器。系统存储器2804可存储一个或多个处理单元2812在运行时可能需要的指令和数据中的任何指令和数据。在一个或多个具体实施中,本主题公开的过程被存储在系统存储器2804、永久性存储设备2802和/或ROM 2810中。一个或多个处理单元2812从这些各种存储器单元检索要执行的指令和要处理的数据,以便执行一个或多个具体实施的过程。
总线2808还连接至输入设备接口2814和输出设备接口2806。输入设备接口2814使用户能够向电子系统2800传送信息以及选择命令。可与输入设备接口2814一起使用的输入设备可包括例如字母数字混合键盘和指向设备(也称为“光标控制设备”)。输出设备接口2806可启用例如由电子系统2800生成的图像的显示。可与输出设备接口2806一起使用的输出设备可包括例如打印机和显示设备,诸如液晶显示器(LCD)、发光二极管(LED)显示器、有机发光二极管(OLED)显示器、柔性显示器、平板显示器、固态显示器、投影仪或用于输出信息的任何其他设备。一个或多个具体实施可包括既充当输入设备又充当输出设备的设备,诸如触摸屏。在这些具体实施中,提供给用户的反馈可以是任何形式的感官反馈,诸如视觉反馈、听觉反馈或触觉反馈;并且可以任何形式接收来自用户的输入,包括声学、语音或触觉输入。
最后,如图28所示,总线2808还通过一个或多个网络接口2816将电子系统2800耦接到一个或多个网络并且/或者耦接到一个或多个网络节点,诸如图1中所示的电子设备110。以此方式,电子系统2800可以是计算机网络(诸如LAN、广域网(“WAN”)或内联网)的一部分,或者可以是网络的网络(诸如互联网)的一部分。电子系统2800的任何或全部部件可与本主题公开一起使用。
可以利用编写有一个或多个指令的有形计算机可读存储介质(或一种或多种类型的多个有形计算机可读存储介质)部分地或全部地实现本公开范围之内的具体实施。有形计算机可读存储介质实质上也可以是非暂态的。
计算机可读存储介质可以是任何可以由通用或专用计算设备读、写或以其他方式访问的存储介质,包括任何能够执行指令的处理电子器件和/或处理电路。例如,非限制地,计算机可读介质可包括任何易失性半导体存储器,诸如RAM、DRAM、SRAM、T-RAM、Z-RAM和TTRAM。计算机可读介质也可包括任何非易失性半导体存储器,诸如ROM、PROM、EPROM、EEPROM、NVRAM、闪存、nvSRAM、FeRAM、FeTRAM、MRAM、PRAM、CBRAM、SONOS、RRAM、NRAM、赛道存储器、FJG和Millipede存储器。
此外,计算机可读存储介质可包括任何非半导体存储器,诸如光盘存储装置、磁盘存储装置、磁带、其他磁性存储设备或者能够存储一个或多个指令的任何其他介质。在一个或多个具体实施中,有形计算机可读存储介质可直接耦接到计算设备,而在其他具体实施中,有形计算机可读存储介质可例如经由一个或多个有线连接、一个或多个无线连接、或它们的任意组合而间接地耦接到计算设备。
指令可以是直接能执行的,或者可用于开发可执行指令。例如,指令可被实现为可执行的或不可执行的机器代码,或者可被实现为可被编译以产生可执行的或不可执行的机器代码的高级语言指令。此外,指令也可被实现为数据,或者可包括数据。计算机可执行指令也可以任何格式组织,包括例程、子例程、程序、数据结构、对象、模块、应用、小程序、函数等。如本领域技术人员认识到的那样,包括但不限于指令的数量、结构、序列和组织的细节可明显不同,而不改变底层的逻辑、功能、处理和输出。
虽然以上论述主要涉及执行软件的微处理器或多核处理器,但一个或多个具体实施由一个或多个集成电路诸如ASIC或FPGA执行。在一个或多个具体实施中,此类集成电路执行存储在电路自身上的指令。
本领域的技术人员将会认识到,本文所述的各种例示性的框、模块、元件、部件、方法和算法可被实现为电子硬件、计算机软件或两者的组合。为了说明硬件和软件的这种可互换性,上文已经一般性地按照功能性对各种例示性的框、模块、元件、部件、方法和算法进行了描述。此类功能性是被实现为硬件还是软件取决于具体应用以及对整个系统施加的设计约束。技术人员对于每个具体应用可通过不同方式实现所描述的功能性。各种部件和框可被不同地布置(例如,以不同的顺序排列,或以不同的方式划分),而不脱离本主题技术的范围。
应当理解,本实用新型所公开的过程中的框的特定顺序或分级结构为示例性方法的例示。基于设计优选要求,应当理解,过程中的框的特定顺序或者分级结构可被重新布置或者所有示出的框都被执行。这些框中的任何框可被同时执行。在一个或多个具体实施中,多任务和并行处理可能是有利的。此外,上述具体实施中各个系统部件的划分不应被理解为在所有具体实施中都要求此类划分,并且应当理解,程序部件和系统可一般性地被一起整合在单个软件产品中或者封装到多个软件产品中。
如本说明书以及本专利申请的任何权利要求中所用,术语“基站”、“接收器”、“计算机”、“服务器”、“处理器”及“存储器”均是指电子设备或其他技术设备。这些术语排除人或者人的群组。出于本说明书的目的,术语“显示”或“正在显示”意指在电子设备上显示。
如本文所用,在用术语“和”或“或”分开项目中任何项目的一系列项目之后的短语“中的至少一者”是将列表作为整体进行修饰,而不是修饰列表中的每个成员(即每个项目)。短语“中的至少一者”不要求选择所列出的每个项目中的至少一个;相反,该短语允许包括任何一个项目中的至少一个和/或项目的任何组合中的至少一个和/或每个项目中的至少一个的含义。举例来说,短语“A、B和C中的至少一者”或“A、B或C中的至少一者”各自是指仅A、仅B或仅C;A、B和C的任意组合;和/或A、B和C中的每一个中的至少一个。
谓词字词“被配置为”、“能够操作以”以及“被编程以”并不意味着对某一主题进行任何特定的有形或无形的修改而是旨在可互换使用。在一个或多个具体实施中,被配置为监视和控制操作或部件的处理器也可以是意指处理器被编程以监视和控制操作或者处理器可操作以监视和控制操作。同样,被配置为执行代码的处理器可解释为被编程以执行代码或能够操作以执行代码的处理器。
短语诸如方面、该方面、另一方面、一些方面、一个或多个方面、具体实施、该具体实施、另一具体实施、一些具体实施、一个或多个具体实施、实施方案、该实施方案、另一实施方案、一些实施方案、一个或多个实施方案、配置、该配置、其他配置、一些配置、一种或多种配置、主题技术、公开、本公开、它们的其他变型等等都是为了方便,并不意味着涉及这样的一个或多个短语的公开对于主题技术是必不可少的,也不意味着这种公开适用于主题技术的所有配置。涉及此类一个或多个短语的公开可适用于所有配置或一个或多个配置。涉及此类一个或多个短语的公开可提供一个或多个示例。短语诸如方面或一些方面可指代一个或多个方面,反之亦然,并且这与其他前述短语类似地应用。
字词“示例性”在本文中被用于意指“用作示例、实例或者例示”。在本文中被描述为“示例性的”或作为“示例”的任何实施方案不必被理解为优选于或优于其他具体实施。此外,在术语“包括”、“具有”等在说明书或权利要求中使用的限度内,这样的术语旨在是包含性的,与术语“包括”当在权利要求中被用作过渡字词时“包括”被解释的方式类似。
本领域的普通技术人员已知或稍后悉知的贯穿本公开描述的各个方面的元素的所有结构和功能等同物通过引用明确地并入本文,并且旨在被权利要求书所涵盖。此外,本文所公开的任何内容并非旨在提供给公众,而与该公开是否明确地被陈述在权利要求中无关。不应根据35 U.S.C.§112(f)的规定解释任何权利要求要素,除非使用短语“用于……的装置”明确陈述了该要素,或者就方法权利要求而言,使用短语“用于……的步骤”陈述了该要素。
先前的描述被提供以使得本领域的技术人员能够实践本文所述的各个方面。这些方面的各种修改对本领域的技术人员而言是显而易见的,并且本文所限定的通用原则可应用于其他方面。因此,本权利要求书并非旨在受限于本文所示的方面,而是旨在使得全部范围与语言权利要求书一致,其中对奇异值中的元素的引用并非旨在意味着“仅仅一个”,而是指“一个或多个”,除非被具体指出。除非另外特别说明,否则术语“一些”是指一个或多个。男性的代名词(例如,他的)包括女性和中性(例如,她的和它的),并且反之亦然。标题和子标题(如果有的话)仅为了方便起见而使用并且不限制本主题公开。

Claims (16)

1.一种方法,包括:
接收与动画相关的第一信息,所述第一信息包括初始状态、目标状态和动画函数;
生成所述目标状态的副本,所述目标状态的所述副本包括所述动画的记录,所述动画的所述记录至少部分地基于与所述动画相关的所述第一信息和与所述动画函数相关的进一步信息,其中所述动画函数是时间函数;
至少部分地基于当前时间和所述动画的开始时间来确定实耗时间;
至少部分地基于所述实耗时间更新所述目标状态的所述副本中与所述动画的中间状态相关的值,所述中间状态介于所述初始状态与所述目标状态之间;以及
提供所述目标状态的所述副本,所述目标状态的所述副本包括与用于渲染所述动画的所述中间状态相关的所述值。
2.根据权利要求1所述的方法,其中所述动画函数对应于定时曲线。
3.根据权利要求1所述的方法,其中所述动画函数对应于手势。
4.根据权利要求1所述的方法,其中所述动画函数对应于物理模拟,所述物理模拟包括弹簧状运动。
5.根据权利要求1所述的方法,还包括:
应用内插曲线以将所述动画从所述初始状态混合到所述目标状态。
6.根据权利要求1所述的方法,其中所述动画的所述记录包括表示所述动画的初始值的第一值、表示所述动画的最终值的第二值、与所述动画函数相关的信息以及用于计算所述动画的实耗时间的开始时间。
7.根据权利要求1所述的方法,其中所述动画与嵌套动画相关,所述嵌套动画包括影响子视图的相应动画的父视图。
8.根据权利要求7所述的方法,其中所述嵌套动画与以动画方式显示颜色的所述父视图相关。
9.根据权利要求7所述的方法,其中所述嵌套动画与所述父视图和所述子视图相关,所述父视图改变区域,所述子视图在所述区域正在增大或缩小时在所述区域内以动画方式显示。
10.根据权利要求1所述的方法,其中所述动画取决于手势的当前状态。
11.一种系统,包括:
处理器;
存储器设备,所述存储器设备包含指令,所述指令在被所述处理器执行时使得所述处理器:
接收与动画相关的第一信息,所述第一信息包括初始状态、目标状态和动画函数;
生成所述目标状态的副本,所述目标状态的所述副本包括所述动画的记录,所述动画的所述记录至少部分地基于与所述动画相关的所述第一信息和与所述动画函数相关的进一步信息,其中所述动画的所述记录包括表示所述动画的初始值的第一值、表示所述动画的最终值的第二值、与所述动画函数相关的信息以及用于计算所述动画的实耗时间的开始时间;
更新所述目标状态的所述副本中与所述动画的中间状态相关的值,所述中间状态介于所述初始状态与所述目标状态之间;以及
提供所述目标状态的所述副本,所述目标状态的所述副本包括与用于渲染所述动画的所述中间状态相关的所述值。
12.根据权利要求11所述的系统,其中所述动画函数对应于定时曲线、手势或物理模拟,所述物理模拟包括弹簧状运动。
13.根据权利要求11所述的系统,其中所述存储器设备包含进一步指令,所述指令在由所述处理器执行时使得所述处理器还:
应用内插曲线以将所述动画从所述初始状态混合到所述目标状态。
14.根据权利要求13所述的系统,其中所述存储器设备包含进一步指令,所述指令在由所述处理器执行时使得所述处理器还:
至少部分地基于当前时间和所述动画的开始时间来确定实耗时间。
15.根据权利要求14所述的系统,其中利用所述实耗时间基于所述动画函数来确定所述中间状态。
16.一种包括指令的非暂态计算机可读介质,所述指令在由计算设备执行时,使得所述计算设备执行包括以下操作的操作:
接收与动画相关的第一信息,所述第一信息包括初始状态、目标状态和动画函数,其中所述动画与嵌套动画相关,所述嵌套动画包括影响子视图的相应动画的父视图;
生成所述目标状态的副本,所述目标状态的所述副本包括所述动画的记录,所述动画的所述记录至少部分地基于与所述动画相关的所述第一信息和与所述动画函数相关的进一步信息;
更新所述目标状态的所述副本中与所述动画的中间状态相关的值,所述中间状态介于所述初始状态与所述目标状态之间;以及
提供所述目标状态的所述副本,所述目标状态的所述副本包括与用于渲染所述动画的所述中间状态相关的所述值。
CN201980033615.5A 2018-06-03 2019-05-31 为用户界面和动画提供应用程序编程接口的框架 Active CN112136101B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862679890P 2018-06-03 2018-06-03
US62/679,890 2018-06-03
PCT/US2019/034982 WO2019236419A1 (en) 2018-06-03 2019-05-31 Framework providing application programming interface for user interfaces and animation

Publications (2)

Publication Number Publication Date
CN112136101A CN112136101A (zh) 2020-12-25
CN112136101B true CN112136101B (zh) 2024-08-02

Family

ID=67180870

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980033615.5A Active CN112136101B (zh) 2018-06-03 2019-05-31 为用户界面和动画提供应用程序编程接口的框架

Country Status (4)

Country Link
US (3) US11042388B2 (zh)
EP (1) EP3803563A1 (zh)
CN (1) CN112136101B (zh)
WO (1) WO2019236419A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11500936B2 (en) * 2018-08-07 2022-11-15 Walmart Apollo, Llc System and method for structure and attribute based graph partitioning
CN112394908A (zh) * 2020-11-19 2021-02-23 平安普惠企业管理有限公司 埋点页面自动生成的方法、装置、计算机设备及存储介质
CN112799669B (zh) * 2021-04-06 2021-07-06 武汉元光科技有限公司 应用程序界面布局代码的生成方法、装置及电子设备
CN113204445B (zh) * 2021-05-10 2024-04-19 北京奇艺世纪科技有限公司 用于崩溃定位的信息传送方法、装置、设备及存储介质
CN115994007A (zh) * 2021-10-18 2023-04-21 华为技术有限公司 动画效果显示方法及电子设备
WO2023220094A1 (en) * 2022-05-10 2023-11-16 Apple Inc. Dynamically resizable content for electronic devices
US12086371B2 (en) * 2022-05-10 2024-09-10 Apple Inc. Dynamically resizable content for electronic devices
CN116089056B (zh) * 2022-08-22 2023-10-20 荣耀终端有限公司 用于图像绘制的方法及相关装置
CN117251231B (zh) * 2023-11-17 2024-02-23 浙江口碑网络技术有限公司 一种动画资源处理方法、装置、系统及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1689046A (zh) * 2003-05-09 2005-10-26 微软公司 通过动画对象实例来支持图形显示元素的动画制作的系统
CN107533466A (zh) * 2015-04-14 2018-01-02 微软技术许可有限责任公司 独立表达式动画

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5644686A (en) * 1994-04-29 1997-07-01 International Business Machines Corporation Expert system and method employing hierarchical knowledge base, and interactive multimedia/hypermedia applications
US6504545B1 (en) * 1998-03-27 2003-01-07 Canon Kabushiki Kaisha Animated font characters
US6496842B1 (en) 1999-05-28 2002-12-17 Survol Interactive Technologies Navigating heirarchically organized information
US20060129933A1 (en) 2000-12-19 2006-06-15 Sparkpoint Software, Inc. System and method for multimedia authoring and playback
US7076766B2 (en) 2002-06-03 2006-07-11 Steve Wirts Software application development methods and framework
US7234117B2 (en) 2002-08-28 2007-06-19 Microsoft Corporation System and method for shared integrated online social interaction
US7337401B2 (en) 2002-12-18 2008-02-26 Microsoft Corporation User interface element representation with simplified view
US7088374B2 (en) 2003-03-27 2006-08-08 Microsoft Corporation System and method for managing visual structure, timing, and animation in a graphics processing system
US7865834B1 (en) 2004-06-25 2011-01-04 Apple Inc. Multi-way video conferencing user interface
US7432928B2 (en) * 2005-06-14 2008-10-07 Microsoft Corporation User interface state reconfiguration through animation
US8762410B2 (en) 2005-07-18 2014-06-24 Oracle International Corporation Document level indexes for efficient processing in multiple tiers of a computer system
US8312113B2 (en) * 2008-02-21 2012-11-13 Disney Enterprises, Inc. Managing shell configurations to dynamically control user computing environments
US8635177B2 (en) 2009-08-17 2014-01-21 Adobe Systems Incorporated Rule-based binding
US20120290925A1 (en) 2010-01-29 2012-11-15 Clayton Brian Atkins Incremental Graphic Object Layout Editing
CA2792685C (en) 2011-10-18 2017-08-22 Research In Motion Limited Method of modifying rendered attributes of list elements in a user interface
KR20130070506A (ko) 2011-12-19 2013-06-27 삼성전자주식회사 페이지 형태를 디스플레이하는 방법 및 디스플레이 장치
US20140188942A1 (en) 2012-12-31 2014-07-03 Appsense Limited Data driven hierarchical pages
IL224936A0 (en) * 2013-02-26 2013-07-31 Google Inc User interface creation and preview
US10191889B2 (en) * 2014-07-29 2019-01-29 Board Of Regents, The University Of Texas System Systems, apparatuses and methods for generating a user interface by performing computer vision and optical character recognition on a graphical representation
US10146409B2 (en) 2014-08-29 2018-12-04 Microsoft Technology Licensing, Llc Computerized dynamic splitting of interaction across multiple content
US11494048B2 (en) 2014-09-04 2022-11-08 Home Box Office, Inc. View virtualization
US10216750B2 (en) * 2014-10-14 2019-02-26 Microsoft Technology Licensing, Llc Annotated geometry
US9690764B1 (en) 2014-12-12 2017-06-27 Amazon Technologies, Inc. Delivery and display of page previews using shadow DOM
US10585548B2 (en) 2015-03-03 2020-03-10 Soroco Private Limited Software robots for programmatically controlling computer programs to perform tasks
CN107818163B (zh) * 2017-11-01 2019-03-29 平安科技(深圳)有限公司 页面展示方法、装置、计算机设备和存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1689046A (zh) * 2003-05-09 2005-10-26 微软公司 通过动画对象实例来支持图形显示元素的动画制作的系统
CN107533466A (zh) * 2015-04-14 2018-01-02 微软技术许可有限责任公司 独立表达式动画

Also Published As

Publication number Publication date
US20190371040A1 (en) 2019-12-05
US11042388B2 (en) 2021-06-22
WO2019236419A1 (en) 2019-12-12
CN112136101A (zh) 2020-12-25
EP3803563A1 (en) 2021-04-14
US20190370031A1 (en) 2019-12-05
US11550601B2 (en) 2023-01-10
US20190370030A1 (en) 2019-12-05
US11531556B2 (en) 2022-12-20

Similar Documents

Publication Publication Date Title
CN112136101B (zh) 为用户界面和动画提供应用程序编程接口的框架
US12079626B2 (en) Methods and systems for creating applications using scene trees
US12045304B2 (en) Automatic website data migration
US20130120401A1 (en) Animation of Computer-Generated Display Components of User Interfaces and Content Items
KR20230021113A (ko) 이미지 프로세싱을 위한 소프트웨어 개발 키트
US20210406447A1 (en) Decoupling website service from presentation layer
Tehrani et al. Heuristic evaluation for Virtual Museum on smartphone
US11416939B1 (en) Financial future visualization and training
US8943419B2 (en) System for creating collaborative content
CN117009700A (zh) 虚拟现实场景构建方法、装置、电子设备及存储介质
US20140325404A1 (en) Generating Screen Data
CN107450905A (zh) 会话界面渲染方法及客户端
US10417327B2 (en) Interactive and dynamically animated 3D fonts
CN106354449A (zh) 一种文档在线演示方法及客户端
US20140375572A1 (en) Parametric motion curves and manipulable content
WO2023041150A1 (en) Method and device for facilitating a privacy-aware representation in a system
US20220215342A1 (en) Virtual collaboration environment
Klinke et al. Tool support for collaborative creation of interactive storytelling media
US20230177855A1 (en) Notifications in Extended Reality Environments
Dinnen ‘Break out that Perl script’: The imaging and imagining of code in The Social Network and Catfish
Brendel et al. Exploring the immediate mode GUI concept for graphical user interfaces in mixed reality applications
CN117270853A (zh) 组件处理方法、装置、电子设备和计算机可读存储介质
Jackson et al. Android Procedural Animation: XML, Concepts, and Optimization

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant