Android 动画被延迟,第一个动画没有运行完整长度

标签 android animation viewanimator

我在使用 ViewAnimator 的 Android 动画方面遇到了一些问题。

这是我的代码(是的,我知道我应该用 XML 自己制作动画,但这不是问题所在):

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    final ViewAnimator animator = (ViewAnimator)getActivity().findViewById(R.id.animator);
    Button next = (Button)getActivity().findViewById(R.id.buttonNext);
    Button back = (Button)getActivity().findViewById(R.id.buttonBack);
    next.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            animator.setInAnimation(inFromBottomAnimation());
            animator.setOutAnimation(outToTopAnimation());
            animator.showNext();
        }
    });
    back.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            animator.setInAnimation(inFromTopAnimation());
            animator.setOutAnimation(outToBottomAnimation());
            animator.showPrevious();
        }
    });

}

private Animation inFromBottomAnimation() {

    Animation inFromBottom = new TranslateAnimation(
    Animation.RELATIVE_TO_PARENT,  0.0f, Animation.RELATIVE_TO_PARENT,  0.0f,
    Animation.RELATIVE_TO_PARENT, +1.0f, Animation.RELATIVE_TO_PARENT,  0.0f
    );
    inFromBottom.setDuration(1000);
    inFromBottom.setInterpolator(new AccelerateInterpolator());
    return inFromBottom;
}
private Animation outToTopAnimation() {
    Animation outToTop = new TranslateAnimation(
    Animation.RELATIVE_TO_PARENT,  0.0f, Animation.RELATIVE_TO_PARENT,  0.0f,
    Animation.RELATIVE_TO_PARENT,  0.0f, Animation.RELATIVE_TO_PARENT, -1.0f
    );
    outToTop.setDuration(1000);
    outToTop.setInterpolator(new AccelerateInterpolator());
    return outToTop;
}

private Animation inFromTopAnimation() {
    Animation inFromTop = new TranslateAnimation(
    Animation.RELATIVE_TO_PARENT,  0.0f, Animation.RELATIVE_TO_PARENT,  0.0f,
    Animation.RELATIVE_TO_PARENT, -1.0f, Animation.RELATIVE_TO_PARENT,  0.0f
    );
    inFromTop.setDuration(1000);
    inFromTop.setInterpolator(new AccelerateInterpolator());
    return inFromTop;
}
private Animation outToBottomAnimation() {
    Animation outToBottom = new TranslateAnimation(
    Animation.RELATIVE_TO_PARENT,  0.0f, Animation.RELATIVE_TO_PARENT,  0.0f,            
    Animation.RELATIVE_TO_PARENT,  0.0f, Animation.RELATIVE_TO_PARENT, +1.0f
    );
    outToBottom.setDuration(1000);
    outToBottom.setInterpolator(new AccelerateInterpolator());
    return outToBottom;
}

首先,动画有延迟。在动画开始之前我必须等待半秒钟。其次,在 ViewAnimator 中运行的第一个动画要么根本不运行(只是跳到下一个 View - 由于第一个问题等待半秒后),要么运行得太快以至于无法注意到。

这些问题是否有解决方法/修复方法?

最佳答案

似乎是 Android 的问题。这个问题在 Android 4.1 上不太明显。

关于Android 动画被延迟,第一个动画没有运行完整长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10304378/

相关文章:

android - 平板电脑的 apk 更新,仍然显示 "Designed for phones"

java - 如何将 Mac 地址转换为十六进制并将其传递给 java 中的字节数组

javascript - 如何让 window.onbeforeunload 等待动画?

animation - Safari 在不相关的动画运行时更改字体粗细

android - 如何向我的移动应用程序添加高级动画?

android - 开始后无法在android中停止Animator

android - 当前 ViewAnimator 的新替代品是什么?

java - android rtsp 直播 - "Can' t 播放此视频”

java - Android 11 上的沉浸式全屏