动画:在android中如何扩展&淡化由中心点的多行文本组成的视图

时间:2015-09-07 11:04:04

标签: android animation

我想为包含多行文字的视图设置动画,如链接https://dl.dropboxusercontent.com/u/8003415/animation.gif所示。此视图包含两个包含在父视图中的TextView。

此父视图包含两组动画。

1)第一组视图包含多行文本,这些文本从正常缩放到大,然后逐渐淡出。

2)第二组视图包含另一组多个文本,它们逐渐淡化并从小到正。

请注意,缩放和淡入应同时发生。

对于第一组我设计了下面的动画集。这个动画设置比例((1,1)到(1.5,1.5)))并从中心淡化文本块。

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@anim/custom_decelerator" >

    <scale
        android:duration="50"
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="1.5"
        android:toYScale="1.5" />

    <alpha
        android:duration="2000"
        android:fromAlpha="2.0"
        android:toAlpha="0.0" />

</set> 

并且第二组也缩放((-1,-1)到(1,1)))并从中心淡出文本块

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@anim/custom_decelerator" >

    <alpha
        android:duration="50"
        android:fromAlpha="0.0"
        android:toAlpha="0.2" />

    <scale
        android:duration="3000"
        android:fromXScale="-1"
        android:fromYScale="-1"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="1.0"
        android:toYScale="1.0" />

</set>

问题是,这两组动画与上面链接中指定的动画完全不匹配。

动画似乎不是来自文本块的死角。

1 个答案:

答案 0 :(得分:0)

在父视图上同时应用这些动画集不会产生您正在寻找的动画。如果我理解你正确的话:

parentView.startAnimation(animSet1);
parentView.startAnimation(animSet2);

我是对的吗?如果是这样,你做错了!您应该使用以下布局:(这不是真正的XML代码,它是伪XML代码)

<Parent>
    <Frame1>
        <TextViews>
    </Frame1>
    <Frame2>
        <TextViews>
    </Frame2>
</Parent>

通过此设计,您应该将Parent元素视为FrameLayout,并且Frame元素可以是您想要的任何布局。现在,您可以通过以下方式实现您的愿望动画:

frame1.startAnimation(animSet1);
frame2.startAnimation(animSet2);

如果有什么不清楚的地方,请不要犹豫,告诉我。