代码之家  ›  专栏  ›  技术社区  ›  j2emanue

Android-为textview创建类似电影字幕的向上滑动动画

  •  0
  • j2emanue  · 技术社区  · 4 年前

    我使用的是一个w文本切换器,看起来像这样:

    活动_main.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>
    

    我想为textswitcher创建一个滑入和滑出动画,这样它看起来就像电影中的场景,下一个文本从底部滑入,而顶部的文本则通过向上滑动而消失。我试过几次都没有成功。到目前为止,我掌握的情况如下:

    我的幻灯片_in.xml格式动画:

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

    还有我的幻灯片_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");
    }
    

    }

    enter image description here

    我想发生的是“开场白”这个词会一直滑到屏幕顶部,再也不会出现。之后的文本“主要明星:詹姆斯邦德”从底部滑动到它的位置。你能帮助我吗?

    0 回复  |  直到 4 年前
        1
  •  0
  •   j2emanue    4 年前

    我想出来了…这是幻灯片:

    <?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>
    

    this page 对我来说很有用,所以我可以知道p代表什么

    enter image description here