You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TextView的连续动画之间调用setText()方法?

解决TextView滑出-修改文本-滑回的动画顺序问题

你遇到的问题是因为Android的View同一时间只能执行一个动画,连续调用startAnimation()会直接终止前一个动画并启动新的。要实现"滑出→改文本→滑回"的流程,需要通过**动画监听器(AnimationListener)**监听第一个动画的结束事件,在结束后再执行后续操作。

代码修改方案

替换你原来的MainActivity代码,改为以下实现:

TextView view = findViewById(R.id.status_text);
// 加载滑出动画
Animation slideOutAnim = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_right);

// 设置动画监听器
slideOutAnim.setAnimationListener(new Animation.AnimationListener() {
    @Override
    public void onAnimationStart(Animation animation) {
        // 动画开始时的操作(可选)
    }

    @Override
    public void onAnimationEnd(Animation animation) {
        // 第一个动画结束后,修改文本
        view.setText(status_text);
        // 加载并启动滑回动画
        Animation slideInAnim = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.swipe_left);
        view.startAnimation(slideInAnim);
    }

    @Override
    public void onAnimationRepeat(Animation animation) {
        // 动画重复时的操作(可选)
    }
});

// 启动第一个滑出动画
view.startAnimation(slideOutAnim);

补充说明

确保你的swipe_left.xml是正确的滑回动画,示例如下:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromXDelta="100%p"
        android:toXDelta="0%p"
        android:duration="700" />
</set>

这个方案通过监听动画结束事件,保证了三个步骤的顺序执行:滑出动画完成后才修改文本,再启动滑回动画,不会出现动画被中断的问题。

内容的提问来源于stack exchange,提问作者slowcoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 00:05:56