gpt4 book ai didi

android - 在 Android 中启动前序列动画卡住

转载 作者:搜寻专家 更新时间:2023-11-01 09:39:02 27 4
gpt4 key购买 nike

我有两个序列动画(xml 文件)。我想在第一个动画停止时开始第二个动画。这是我的源代码:

    mFingerprintIcon.setImageResource(0);
mFingerprintIcon.setBackgroundResource(R.drawable.finger_print_first_animation);
final AnimationDrawable animFirst = (AnimationDrawable) mFingerprintIcon.getBackground();

mFingerprintStatus.setTextColor(ContextCompat.getColor(getActivity(), R.color.success_color));
mFingerprintStatus.setText(getResources().getString(R.string.fingerprint_success));


int iDuration = 0;

for (int i = 0; i < animFirst.getNumberOfFrames(); i++) {
iDuration += animFirst.getDuration(i);
}

animFirst.start();


Handler handler2 = new Handler();
handler2.postDelayed(new Runnable() {
@Override
public void run() {
animFirst.stop();
mFingerprintIcon.setBackgroundResource(R.drawable.finger_print_second_animation);
AnimationDrawable animSecond = (AnimationDrawable) mFingerprintIcon.getBackground();
animSecond.setOneShot(false);
animSecond.start();

}
}, iDuration);

此代码可以运行,但有一个问题。第二个动画卡住几秒钟然后开始。

我怎样才能编写代码,使两个动画都可以在不卡住的情况下进行动画处理?

最佳答案

使用 AnimationListener :

public class YourClass extends Activity implements Animation.AnimationListener {

...
animFirst.setListener(this);

并在 onAnimationEnd 开始你的第二个动画方法。

或者在匿名内部类中:

animFirst.setListener(new AnimationListener() {

public void onAnimationEnd(Animation animation) {
animSecond.start();
}

public void onAnimationRepeat(Animation animation) {
}

public void onAnimationStart(Animation animation) {
}
});

关于android - 在 Android 中启动前序列动画卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41037670/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com