【问题标题】:TextSwitchers: reverse the animationTextSwitchers:反转动画
【发布时间】:2016-01-21 18:08:00
【问题描述】:

这是我的 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>

它实际上是一个like按钮。当你点击点赞时,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>

【问题讨论】:

    标签: android textswitcher


    【解决方案1】:

    我希望过去 2 年你没有在电脑前等待答案...

    需要 4 个单独的动画:

    • slide_up_inslide_up_out(向上方向,您已经实现)
    • slide_down_inslide_down_out(向下方向)

    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>
    

    TextSwitcher 上调用setText 之前,请务必重置进出动画:

    // 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-23
      • 2018-01-13
      • 2015-11-06
      相关资源
      最近更新 更多