`

v4_11 为视图状态应用变换

    博客分类:
  • flex
 
阅读更多
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 -->
分享到:
评论

相关推荐

    应用源码之AnimationTest(.zip

    6. **视图变换**:如果`AnimationTest`涉及到视图的移动和变形,那么会用到`setTranslationX/Y()`, `setScaleX/Y()`, `setRotation()`等方法,这些方法在视图动画中用于改变视图的位置和大小。 7. **框架兼容性**:...

    3d滑动viewpager水平实现

    在这些方法中,我们可以根据页面滚动的状态和位置计算出相应的3D转换矩阵,然后应用到每个页面上。使用`Camera`和`Matrix`类可以辅助完成3D变换,通过调整相机的位置和角度,使页面在滑动时产生立体的翻转效果。 ...

    Android自定义动画 3D旋转

    另外,Android还提供了一个Transition API,可以在两个视图状态之间创建平滑过渡,其中包括3D旋转效果。例如,使用TransitionSet和Rotate3dTransition可以创建一个3D旋转过渡: ```java TransitionSet set = new ...

    安卓动画效果相关-浮动菜单按钮的展开与收缩动画。.rar

    5. **兼容性处理**:为了保证应用在旧版本的Android系统上也能运行,可能需要使用`android.support.v4`库中的动画支持类。这些类提供了与新版本API相似的功能,但向下兼容至Android 2.1(API Level 7)。 6. **代码...

    Android animation图片移动效果.zip

    视图动画系统主要用于API级别11及以下,它不会改变对象的实际状态,只影响屏幕显示。而属性动画系统自API级别11引入,可以真正改变对象的属性,提供了更强大的动画效果。 2. **视图动画(View Animation)** 在...

    android5.0动画适配到4.*版本

    1. 自定义解决方案:通过监听按钮点击事件,手动更新视图状态和动画效果,例如使用`ViewPropertyAnimator`或`NineOldAndroids`库提供的动画类。 2. 第三方库:如`android-transitions`库,它可以模拟部分Transition ...

    ViewPage实用案例

    - 对于内存敏感的应用,可以考虑使用`FragmentStatePagerAdapter`,它会自动管理`Fragment`的状态,防止内存泄漏。 9. **实战演练** "ViewPageDemo"项目提供了具体的示例代码,你可以从中学习如何创建适配器、...

    viewPage的demo

    - 使用`FragmentStatePagerAdapter`代替`FragmentPagerAdapter`,防止内存泄漏和更好的保存Fragment状态。 通过以上知识点的学习,开发者可以熟练地在项目中应用`ViewPager`,实现各种滑动页面的效果。这个`...

    轮播图效果实现

    下面我们将详细讨论`ViewPager`的使用,以及如何在Android应用中构建轮播图效果。 `ViewPager`是Android SDK中的一个强大组件,属于`android.support.v4.view`包,主要用于实现滑动页面的效果。它允许用户左右滑动...

    Android 滑动翻页源码.rar

    `PageTransformer`接口提供了`transformPage()`方法,允许你在页面滑动时对每个页面应用特定的变换效果,如淡入淡出、缩放等。 5. **Indicator**:有时候我们还需要一个指示当前页面的指示器,例如底部的小圆点。这...

Global site tag (gtag.js) - Google Analytics