从XML加载片段时动画片段转换

时间:2011-12-20 18:53:43

标签: android android-layout android-3.0-honeycomb android-fragments

我的平板电脑应用程序针对不同的UI模式有一个活动和几个不同的布局 - 这些布局中的每一个都使用<片段>用不同的片段填充UI的标签(在活动中调用setContentView以切换模式)。

如何以这种方式加载新片段时,如何使用过渡动画淡入?现在,在片段加载时,在模式之间切换会产生闪烁效果。

谢谢!

1 个答案:

答案 0 :(得分:1)

我之前从未使用过片段,但没有理由让片段影响我的解决方案。基本上,您实现了一个动画,以显示在某个东西的第一个布局上。最好的例子是listview

首先,您需要添加一些额外的动画文件,添加到res / anim

<强> layout_controller.xml:

<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
android:delay="50%"
android:animation="@anim/bounce" />

这定义了一个铺设东西的过程 然后, bounce.xml

<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/bounce_interpolator">
<translate
    android:fromXDelta="40%"
    android:toXDelta="0%"
    android:fromYDelta="0%"
    android:toYDelta="0%" 
    android:duration="900"/>
<alpha
    android:fromAlpha="0"
    android:toAlpha="1"
    android:duration="1000"
    android:interpolator="@android:anim/linear_interpolator"
    />

此动画会将项目反弹,同时也将其淡入。

现在,如果您有一个列表视图,请在其中设置此XML(适用于textview,imageview等)

<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:persistentDrawingCache="animation|scrolling"
android:layoutAnimation="@anim/layout_controller"
/>

layoutAnimation字段告诉listview引用布局控制器如何显示listview。首次绘制列表视图时,每个项目应该连续反弹。您可以通过更改bounce.xml或通过更改layout_controller中定义的50%延迟来更改等待时间,从而轻松自定义动画。