Transitions框架学习(一)—— 创建一个场景

概述

场景用于存储视图结构的状态,包括所有的View对象和它们的属性值。Transitions框架可以在开始场景和结束场景之间应用动画。开始场景通常自动由用户界面的当期状态决定。对于结束场景,框架允许通过资源文件创建或者通过代码动态创建。

本节将介绍如何在应用程序中创建场景以及如何定义场景动作,下一节将介绍如何在两个场景之间应用转场效果。

注意:该框架也可以不使用场景而只对单独一个视图结构执行动画。但是本节内容是学习使用转场框架的基础。

通过布局资源文件创建一个场景

可以直接通过布局资源文件来创建一个场景实例。该种方式适合于被文件锁描述的视图结构在整个程序中保持基本稳定的情况。获取到的场景代表创建该场景实例的那个时间点的视图结构的状态。如果改变了视图结构,需要重新创建场景实例。框架将通过布局文件中的整个视图结构来创建场景,而不允许仅通过其中一部来创建。

通过布局文件来创建场景时,获取场景的根视图并作为一个ViewGroup对象,然后调用Scene.getSceneForLayout()方法来创建。该方法需要传递用于创建场景的布局文件的ID和该布局文件的根视图作为参数。

定义用于创建场景的布局文件

The code snippets in the rest of this section show you how to create two different scenes with the same scene root element. The snippets also demonstrate that you can load multiple unrelated Scene objects without implying that they are related to each other.
以下代码将展示如何通过相同的场景根视图元素来创建两个不同的场景,代码同样表明,可以加载不相关的场景对象,这些对象之间并没有隐含的关联性。

布局文件中包含如下布局定义:

  • Activity的主视图,其中包括了一个文本标签和一个子视图。
  • 用于代表第一个场景的相对布局,其中包括两个文本。
  • 用于代表第二个场景的相对布局,依然包括之前的两个文本,但是顺序发生改变。

这样定义之后,所有的动画效果将发生在Activity主视图中的子布局中,而主布局中的文本标签将不受任何影响。

Activity的主布局如下:
res/layout/activity_main.xml

<LinearLayout xmlns:android="http://schem
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基本的自动机数据结构的代码示例: ```python class State: def __init__(self): self.transitions = {} self.final = False class Automaton: def __init__(self): self.states = [State()] def add_word(self, word): current_state = self.states[0] for letter in word: if letter not in current_state.transitions: new_state = State() current_state.transitions[letter] = new_state self.states.append(new_state) current_state = current_state.transitions[letter] current_state.final = True def match(self, text): current_states = [self.states[0]] for letter in text: next_states = [] for state in current_states: if letter in state.transitions: next_states.append(state.transitions[letter]) current_states = next_states return any(state.final for state in current_states) ``` 在这个代码中,有两个类:`State` 和 `Automaton`。`State` 表示自动机中的一个状态,包含一个字典 `transitions` 来存储从该状态开始的转移。`Automaton` 则表示整个自动机,包含一个状态列表 `states` 和一些方法来操作自动机。 `add_word` 方法用于将单词添加到自动机中。它从根状态开始,为单词中的每个字母添加一个状态,并在状态之间添加转移。最后一个状态被标记为终止状态。 `match` 方法用于在自动机中查找文本。它从根状态开始,对于文本中的每个字母,它找到所有当前状态可以转移到的状态,并将其作为下一个状态。如果任何一个下一个状态是终止状态,则返回 `True`。 这是一个简单的自动机实现,可以用于许多字符串匹配问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值