根据textview对textview进行动画处理

时间:2020-04-14 18:43:03

标签: android animation transition

我有一个具有两个textview的垂直线性布局,我在第一个textview中添加了textsize动画 所以问题是当文本视图较大时,每当在上部textview中添加新行时,下部textview就会向下移动而没有动画。它只是从以前的位置弹出,然后在新的位置弹出。当第一个textview高度更改时,如何为第二个textview设置动画?

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/one"
        android:text="one two three four five"
        android:textSize="@dimen/TEXT_SIZE_18"/>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/two"
        android:text="six seven eight nine ten"
        android:textSize="@dimen/TEXT_SIZE_18"/>

</LinearLayout>

我为一个文本视图的大小设置了动画

final float startSize = 18; // Size in pixels
final float endSize = 24;
long animationDuration = 600; // Animation duration in ms

ValueAnimator animator = ValueAnimator.ofFloat(startSize, endSize);
animator.setDuration(animationDuration);

animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
    @Override
    public void onAnimationUpdate(ValueAnimator valueAnimator) {
        float animatedValue = (float) valueAnimator.getAnimatedValue();
        if (one!=null){
            one.setTextSize(animatedValue);
        }
    }
});

我希望两个textview自动设置动画

1 个答案:

答案 0 :(得分:0)

一种简单的方法是使用public abstract class Base{} public class A : Base {} public class B : Base {} public class Args { public Base handle = new A(); } public class Program { public static void Main() { Event(new Args()); } public static void foo(A a) {} public static void foo(B b) {} public static void Event(Args args) { foo(args.handle); // here the error occures } } 。可以使用LayoutTransition属性在ViewGroup上启用wihich。

android:animateLayoutChanges="true"

然后,您可以使用<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/linearLayout" android:animateLayoutChanges="true" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/one" android:text="one two three four five" android:textSize="@dimen/TEXT_SIZE_18"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/two" android:text="six seven eight nine ten" android:textSize="@dimen/TEXT_SIZE_18"/> </LinearLayout> 启用转换状态的转换:-

LayoutTransition.CHANGING