0

我正在使用如下所示的 aw TextSwitcher:

活动主.xml:

<?xml version="1.0" encoding="utf-8"?>

<TextSwitcher
    android:id="@+id/simpleTextSwitcher"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:measureAllChildren="true">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:textAlignment="center"
        android:textSize="20sp"
        tools:text="Opening Credits" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="main star: James bond"
        android:textAlignment="center"
        android:textSize="20sp" />

</TextSwitcher>

我想为文本切换器创建一个滑入和滑出动画,使其看起来像电影信用的场景,其中下一个文本从底部滑入,而顶部的文本通过向上滑动消失。我已经尝试了一些不成功的事情。这是我到目前为止所拥有的:

我的 slide_in.xml 动画:

<translate
    android:duration="1000"
    android:fromYDelta="100%"
    android:toYDelta="0"
    />

和我的 slide_out.xml 动画:

<translate
    android:duration="1000"
    android:fromYDelta="100%"
    android:toYDelta="0%p"
    />

我在滑出动画时遇到了困难。

我想清楚我在这里想要什么。我希望 textSwitcher 中当前可见的任何内容向上滑动并且不再被看到,然后立即从底部滑动新文本以取代它。

这是我简单地调用它的方法:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    container.setOnClickListener { showNextText(it) }
    simpleTextSwitcher.setCurrentText("Opening Credits");

    val textAnimationIn =  AnimationUtils.
        loadAnimation(this,   R.anim.slide_in);

    val textAnimationOut =  AnimationUtils.
    loadAnimation(this,   R.anim.slide_out);

    simpleTextSwitcher.setInAnimation(textAnimationIn);
    simpleTextSwitcher.setOutAnimation(textAnimationOut);
}

 fun showNextText( view: View){
        simpleTextSwitcher.setText("main star: james bond");
}

}

这是它现在的行为方式:

在此处输入图像描述

我想要发生的是“Opening Credits”这个词一直滑动到屏幕顶部并且永远不会出现。然后将文本“主要明星:詹姆斯邦德”从底部向上滑动到其位置。你能帮助我吗 ?

4

1 回答 1

1

我想通了...这是幻灯片:

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

    <translate
        android:duration="1000"
    android:fromYDelta="100%p"
    android:toYDelta="0%" />

</set>

和滑出:

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

    <translate
        android:duration="1000"
        android:fromYDelta="0%"
        android:toYDelta="-100%p" />

</set>

这个页面对我非常有用,所以我可以知道 fromYDelta 中的 p 代表什么

这是最终结果:在此处输入图像描述

于 2020-05-14T14:00:45.893 回答