这是我的textSwitcher代码:

        <TextSwitcher
        android:id="@+id/likes_count"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:layout_marginRight="16dp"
        android:layout_marginEnd="16dp"
        android:inAnimation="@anim/slide_in_likes_counter"
        android:outAnimation="@anim/slide_out_likes_counter">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textStyle="bold"
            android:padding="8dp"
            android:textColor="@color/black85"
            android:background="#E0E0E0"
            android:text="0" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textStyle="bold"
            android:padding="8dp"
            android:textColor="@color/deep_orange_500"
            android:background="#E0E0E0"/>

    </TextSwitcher>


它实际上是一个喜欢的按钮。单击“喜欢”后,textSwitcher会向上滑动以显示新的喜欢计数,可以说从0到1。

现在,当您再次单击按钮后已经不一样时,再次单击该按钮时,它将再次向上滑动以显示其从1变为0。

当您与众不同时,是否有办法使其滑落?

该文档并没有说太多:http://developer.android.com/reference/android/widget/TextSwitcher.html

这是slide_in_likes_counter文件:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="150"
    android:interpolator="@android:anim/linear_interpolator">
    <translate
        android:fromYDelta="80%p"
        android:toYDelta="0" />
    <alpha
        android:fromAlpha="0.0"
        android:toAlpha="1.0" />
</set>


这是slide_out_likes_counter文件:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="150"
    android:interpolator="@android:anim/linear_interpolator">
    <translate
        android:fromYDelta="0"
        android:toYDelta="-80%p" />
    <alpha
        android:fromAlpha="1.0"
        android:toAlpha="0.0" />
</set>

最佳答案

希望您在过去两年中一直没有等待计算机等待答案...

需要4个单独的动画:


slide_up_inslide_up_out(在UP方向,您已经实现了)
slide_down_inslide_down_out(在DOWN方向)


slide_down_inslide_down_out是前两个副本的fromYDeltatoYDelta分别反转。

slide_up_in(基于您的slide_in_likes_counter

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="150"
    android:interpolator="@android:anim/linear_interpolator">
    <translate
        android:fromYDelta="80%p"
        android:toYDelta="0" />
    <alpha
        android:fromAlpha="0.0"
        android:toAlpha="1.0" />
</set>


slide_up_out(基于您的slide_in_likes_counter

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="150"
    android:interpolator="@android:anim/linear_interpolator">
    <translate
        android:fromYDelta="0"
        android:toYDelta="-80%p" />
    <alpha
        android:fromAlpha="1.0"
        android:toAlpha="0.0" />
</set>


slide_down_in(新)

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="150"
    android:interpolator="@android:anim/linear_interpolator">
    <translate
        android:fromYDelta="-80%p"
        android:toYDelta="0" />
    <alpha
        android:fromAlpha="0.0"
        android:toAlpha="1.0" />
</set>


slide_down_out(新)

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="150"
    android:interpolator="@android:anim/linear_interpolator">
    <translate
        android:fromYDelta="0"
        android:toYDelta="80%p" />
    <alpha
        android:fromAlpha="1.0"
        android:toAlpha="0.0" />
</set>


setText上调用TextSwitcher之前,请确保重置输入和输出动画:

// Slide up
textSwitcher.setInAnimation(context, R.anim.slide_up_in)
textSwitcher.setOutAnimation(context, R.anim.slide_up_out)

// Slide down
textSwitcher.setInAnimation(context, R.anim.slide_down_in)
textSwitcher.setOutAnimation(context, R.anim.slide_down_out)

10-06 06:56