如何在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
相关产品推荐
相关产品推荐

