- 浏览: 47015 次
- 性别:
- 来自: 杭州
最新评论
v4_11 Animating states with transitions 为视图状态应用变换
ex_10
这部分主要讲
把有关状态和效果的知识结合起来,创建状态间切换的动画过渡效果
如何创建多组件复合效果,以及控制组件在动画过程中出现和消失的时间
要想创建动画效果,首先需要定义一个或多个状态供切换
还需要定义这些效果的顺序以及特性
效果代码中还必须定义该效果的目标组件
Transition实例的fromState和toState属性中使用星号来表示任意状态
fade没有列出target,所以它是以Parallel所有的目标组件为targets
1.来个简单的例子
当从loginState状态变换到portalState状态时,这个动画效果就会被播放
但这里要注意Parallel 的target是employeeOfTheMonth,而这块Panel在两个状态中都存在
所以没有看出fade的效果
<s:transitions> <s:Transition fromState="loginState" toState="portalState"> <s:Parallel target="{employeeOfTheMonth}"> <s:Fade/> <s:Move/> </s:Parallel> </s:Transition> </s:transitions>
2.控制多个组件一起同时运动
<s:transitions> <s:Transition fromState="loginState" toState="portalState"> <s:Parallel targets="{[employeeOfTheMonth,search,cafeteriaSpecial,monthlyEvents]}"> <s:Fade/> <s:Move target="{employeeOfTheMonth}"/> <s:Move target="{search}" xFrom="-166"/> <s:Move target="{cafeteriaSpecial}" yFrom="-329"/> <s:Move target="{monthlyEvents}" xFrom="833"/> </s:Parallel> </s:Transition> </s:transitions>
3.让login淡出,让employeeOfTheMonth移进来
以下的代码运行时,效果有点问题
<s:transitions> <s:Transition fromState="loginState" toState="portalState"> <s:Sequence> <s:Parallel> <s:Fade target="{login}"/> <s:Move target="{employeeOfTheMonth}"/> </s:Parallel> <s:Parallel targets="{[search,cafeteriaSpecial,monthlyEvents]}"> <s:Fade/> <s:Move target="{search}" xFrom="-166"/> <s:Move target="{cafeteriaSpecial}" yFrom="-329"/> <s:Move target="{monthlyEvents}" xFrom="833"/> </s:Parallel> </s:Sequence> </s:Transition> </s:transitions>
4.使用AddAction效果来定义具体的目标组件应该在何时加入到动画效果中
使用RemoveAction效果来定义目标组件何时被从动画效果中移除
把第一个状态中有而第二个状态没有的id移除
在进入第二个状态时,把第一个状态没有,第二个状态有的id加进来
<s:transitions> <s:Transition fromState="loginState" toState="portalState"> <s:Sequence> <s:Parallel> <s:Fade target="{login}"/> <s:Move target="{employeeOfTheMonth}"/> </s:Parallel> <s:RemoveAction target="{login}"/> <s:Parallel targets="{[search,cafeteriaSpecial,monthlyEvents]}"> <s:AddAction/> <s:Fade/> <s:Move target="{search}" xFrom="-166"/> <s:Move target="{cafeteriaSpecial}" yFrom="-329"/> <s:Move target="{monthlyEvents}" xFrom="833"/> </s:Parallel> </s:Sequence> </s:Transition> </s:transitions>
5.employeeOfTheMonth在move的同时调整大小,并且指定了move的开始和结束位置
<s:transitions> <s:Transition fromState="loginState" toState="portalState"> <s:Sequence> <s:Parallel> <s:Fade target="{login}"/> <s:Resize target="{employeeOfTheMonth}" widthFrom="264" widthTo="177"/> <s:Move target="{employeeOfTheMonth}" xFrom="298" xTo="24"/> </s:Parallel> <s:RemoveAction target="{login}"/> <s:Parallel targets="{[search,cafeteriaSpecial,monthlyEvents]}"> <s:AddAction/> <s:Fade/> <s:Move target="{search}" xFrom="-166"/> <s:Move target="{cafeteriaSpecial}" yFrom="-329"/> <s:Move target="{monthlyEvents}" xFrom="833"/> </s:Parallel> </s:Sequence> </s:Transition> </s:transitions>
6.创建另一个动画过渡来设计当用户拿出应用程序时组件的动画效果
注意它removeAction和addAction的两时机,是在fade之前
search, cafeteriaSpecial, monthlyEvents fade之后就没用了,所以直接remove
而login要淡入,所以在淡入之前就要add进来
<s:Transition fromState="portalState" toState="loginState"> <s:Sequence> <s:Parallel> <s:Fade targets="{[search, cafeteriaSpecial, monthlyEvents]}"/> <s:Resize target="{employeeOfTheMonth}" widthFrom="177" widthTo="264"/> </s:Parallel> <s:RemoveAction targets="{[search, cafeteriaSpecial, monthlyEvents]}"/> <s:AddAction target="{login}"/> <s:Parallel target="{login}"> <s:Fade/> </s:Parallel> </s:Sequence> </s:Transition><!--WizRtf2Html Charset=0 -->
发表评论
-
v5_11 创建AIR应用
2011-03-05 21:45 877v5_11 Creating an Adobe AIR app ... -
v5_07 了解皮肤的组成部分
2011-03-05 21:44 1010v5_07 Implementing skin parts 了 ... -
v5_06 绘制MXML图形
2011-03-05 21:44 791v5_06 Drawing with MXMLgraphics ... -
v5_05 了解皮肤
2011-03-05 21:44 865v5_05 Introducing skinning 了解皮肤 ... -
v5_04 使用高级CSS选择器
2011-03-05 21:44 1112v5_04 Introducing advanced CSS ... -
v5_03 在CSS文件中定义样式
2011-02-27 20:31 1091v5_03 Defining styles in CSS ... -
v5_02 使用文本布局框架
2011-02-27 20:31 686v5_02 Utilizing the Text Layout ... -
v5_01 使用文本控件
2011-02-27 20:31 942v5_01 Introducing the text cont ... -
v4_10 使用特效来实现组件动画
2011-02-27 20:30 941v4_10 Animating components with ... -
v4_09 使用容器控制组件布局
2011-02-27 20:30 846v4_09 Using constraints to cont ... -
v4_07 创建应用程序状态
2011-02-27 20:30 773v4_07 Creating pages with Flex ... -
v4_06 了解导航容器
2011-02-27 20:29 700v4_06 Understanding navigator c ... -
v4_05 创建项目渲染器和项目编辑器
2011-02-27 12:24 920v4_05 Creating item renderers a ... -
v4_04 使用DataGrid控件
2011-02-27 12:24 724v4_04 Creating and formatting ... -
v4_03 在基于列表的组件中实施一个Spa
2011-02-27 12:24 780v4_03 Implementing a Spark item ... -
v4_02 创建自定义项目渲染器
2011-02-27 12:24 827v4_02 Creating a custom item re ... -
v4_01 在项目渲染器中显示数据
2011-02-26 15:54 812v4_01 Representing data in defa ... -
v3_07 使用双向绑定
2011-02-26 15:53 867v3_07 Implementing two-way bind ... -
v3_06 验证表单数据
2011-02-26 15:53 798v3_06 validating form data 验证表单 ... -
v4_08 应用布局
2011-02-26 15:49 723v4_08 laying out an application ...
相关推荐
6. **视图变换**:如果`AnimationTest`涉及到视图的移动和变形,那么会用到`setTranslationX/Y()`, `setScaleX/Y()`, `setRotation()`等方法,这些方法在视图动画中用于改变视图的位置和大小。 7. **框架兼容性**:...
在这些方法中,我们可以根据页面滚动的状态和位置计算出相应的3D转换矩阵,然后应用到每个页面上。使用`Camera`和`Matrix`类可以辅助完成3D变换,通过调整相机的位置和角度,使页面在滑动时产生立体的翻转效果。 ...
另外,Android还提供了一个Transition API,可以在两个视图状态之间创建平滑过渡,其中包括3D旋转效果。例如,使用TransitionSet和Rotate3dTransition可以创建一个3D旋转过渡: ```java TransitionSet set = new ...
5. **兼容性处理**:为了保证应用在旧版本的Android系统上也能运行,可能需要使用`android.support.v4`库中的动画支持类。这些类提供了与新版本API相似的功能,但向下兼容至Android 2.1(API Level 7)。 6. **代码...
视图动画系统主要用于API级别11及以下,它不会改变对象的实际状态,只影响屏幕显示。而属性动画系统自API级别11引入,可以真正改变对象的属性,提供了更强大的动画效果。 2. **视图动画(View Animation)** 在...
1. 自定义解决方案:通过监听按钮点击事件,手动更新视图状态和动画效果,例如使用`ViewPropertyAnimator`或`NineOldAndroids`库提供的动画类。 2. 第三方库:如`android-transitions`库,它可以模拟部分Transition ...
- 对于内存敏感的应用,可以考虑使用`FragmentStatePagerAdapter`,它会自动管理`Fragment`的状态,防止内存泄漏。 9. **实战演练** "ViewPageDemo"项目提供了具体的示例代码,你可以从中学习如何创建适配器、...
- 使用`FragmentStatePagerAdapter`代替`FragmentPagerAdapter`,防止内存泄漏和更好的保存Fragment状态。 通过以上知识点的学习,开发者可以熟练地在项目中应用`ViewPager`,实现各种滑动页面的效果。这个`...
下面我们将详细讨论`ViewPager`的使用,以及如何在Android应用中构建轮播图效果。 `ViewPager`是Android SDK中的一个强大组件,属于`android.support.v4.view`包,主要用于实现滑动页面的效果。它允许用户左右滑动...
`PageTransformer`接口提供了`transformPage()`方法,允许你在页面滑动时对每个页面应用特定的变换效果,如淡入淡出、缩放等。 5. **Indicator**:有时候我们还需要一个指示当前页面的指示器,例如底部的小圆点。这...