缩放动画 - 如何停止子视图动画

时间:2014-05-21 12:14:26

标签: android animation scale viewgroup objectanimator

我在此布局中有一个布局(父视图)和一个textview(子视图)。在父视图上应用缩放动画,但当缩放动画应用于父视图时,其子视图也会缩放。是否有任何方法可以阻止动画中的子动画?包括代码

布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.tfg.social.MainActivity$PlaceholderFragment" >

<FrameLayout
    android:id="@+id/top_layout"
    android:layout_width="match_parent"
    android:layout_height="100dp"

    android:layout_gravity="center"
    android:background="#ffff00"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:layout_gravity="center"
        android:text="Top Layout"
        android:background="#000000"
        android:adjustViewBounds="true"
        android:textAppearance="?android:attr/textAppearanceMedium" />
</FrameLayout>

动画方法

protected void expandLayout(View view) {
    ObjectAnimator scaleUpY = ObjectAnimator.ofFloat(view, "scaleY", 5f);
    scaleUpY.setDuration(1000);
    AnimatorSet scaleAnimation = new AnimatorSet();
    scaleAnimation.play(scaleUpY);
    scaleAnimation.start();

}

1 个答案:

答案 0 :(得分:0)

试试这个 -

ValueAnimator valueAnimator = ObjectAnimator.ofInt(start, end);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
    @Override
    public void onAnimationUpdate(ValueAnimator valueAnimator) {
        int val = (Integer) valueAnimator.getAnimatedValue();
        LayoutParams layoutParams = (LayoutParams) getLayoutParams();
        layoutParams.height = val;
        setLayoutParams(layoutParams);
    }
});

valueAnimator.setDuration(300);
valueAnimator.start();