快速业务通道

使用动画转换创建生动的用户体验 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
态效果,可以下载我所创建的视频剪辑( QuickTime 或 MPEG-4 格式)查看转换效果。< /p>

接下来,我们将了解演示应用程序如何实现这种转换效果。

动画转换:API

从最基本的角度而言,这个库由一个 ScreenTransition 对象(负责建立和运行动画)和一个 TransitionTarget 接口(代码需要实现这个 接口)组成。

ScreenTransition

建立动画的代码将使用参数创建这个对象。它的构造函数类似以下形式:

public void ScreenTransition(JComponent transitionContainer,                 TransitionTarget target,                 Animator animator)

此处:

transitionContainer 容器的子类将在转换过程中实现动画效果。

target 是 TransitionTarget 的一个实现,它定义了 setupNextScreen() 方法。该方法用于定义转换界面的GUI。

animator 定义实际动画的参数,比如说持续时间。关于 Animator 的完整描述不在本文讨论范围之内。有关更多信息,请参阅 参考资料 中的 Timing Gramework 参考指南。

要在应用程序中运行转换,可随时调用 start() 方法:

public void start()

调用此方法时, ScreenTransition 将建立运行转换所需的一切条件,然后将运行转换。

TransitionTarget

TransitionTarget 一是个简单的接口,它只含有一个方法:

public void setupNextScreen()

代码需要实现这个方法并建立转换容器 GUI。这样,当方法完成时,应用程序将处于转换完成时的状态。

使用动画转换创建生动的用户体验(3)

时间:2011-07-20 Chet Haase

API 的使用

接下来,我们来了解一下 FieldsOfText 应用程序是如何使用这个 API 的。

首先,我们建立了一个 Animator 运行后半程的转换动画。我们将在转换起始时刻添加一些加速和减速。这种加速/减速行为并不是必需的 ,但是一般而言非线性转换的动画效果会好一些( Smooth Moves 这篇文章有详细的解释)。

Animator animator = new Animator(500); animator.setAcceleration(.2f); animator.setDeceleration(.2f);

然后,我们建立 ScreenTransition 对象使用主(main) JComponent 对象作为转换的一个容器,以及 TransitionTarget 对象(它实现了 setupNextScreen() 接口)和之前建立的 animator:

ScreenTransition transition =      new ScreenTransition(this, this, animator);

当用户单击 More 或 Less 按钮时, actionPerformed() 方法将触发转换:

public void actionPerformed(ActionEvent ae) {    boolean changed = false;    if (ae.getSource().equals(moreButton)) {      if (numFields < MAX_FIELDS) {        numFields++;        changed = true;      }    } else if (ae.getSource().equals(lessButton)) {      if (numFields > 1) {        numFields--;        changed = true;      }    }    if (changed) {      transition.start();    } }

最后,我们在 setupNextScreen() 方法处理来自 ScreenTransition 的回调:

public void setupNextScreen() {    // First, clear out the previous GUI and start from scratch    removeAll();    // Add the More/Less buttons    add(moreOrLess);    // Next, add the proper number of text fields    for (int i = 0; i < numFields; ++i) {      add(textFields[i]);    }    // Finally, add the Submit button at the bottom    add(submit); }

注意,这段代码与之前的 GUI 建立代码几乎相同;惟一的不同之处就是首先调用了 removeAll() 消除以前的 GUI。这段代码的全部

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号