android - 如何将 videoView 与 imageView 和 recyclerView 一起制作动画?

标签 android animation android-recyclerview android-videoview

我想在 imageView 和 recyclerView 上方的 videoView 上使用动画。起初,videoView 的可见性消失了,当我单击 recyclerView 上的项目时,我想让 videoView 可见并且动画向下滑动,并且还使用 imageView 的动画来 slideUp 并使其消失。我怎样才能做到这一点。我已经给出了布局前后的快照。

动画前:

Before Animation

动画后:

After Animation

最佳答案

这是我针对类似情况所做的。在您的布局中,您需要将两个 View 一个放在另一个之上(在它们必须出现的确切位置)。在 onCreate 中将全局布局监听器添加到 videoView/imageView 一次,然后只需更改相应 View 的可见性。此代码可以与 imageView 一起重用,但请记住,您不能同时更改两个 View 的可见性,因为它们会重叠。也许您需要等待第一个动画结束然后显示下一个。这取决于你。

private static final int ANIMATION_DURATION = 350;

private void addVideoViewAnimation(final View videoView) {
    videoView.setTag(videoView.getVisibility());
    videoView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            int newVisibility = videoView.getVisibility();
            if ((int) videoView.getTag() != newVisibility) {
                videoView.setTag(newVisibility);

                TranslateAnimation animation;
                if (newVisibility == View.VISIBLE) {
                    animation = new TranslateAnimation(0, 0, -videoView.getHeight(), 0);
                    animation.setInterpolator(new DecelerateInterpolator());
                } else {
                    animation = new TranslateAnimation(0, 0, 0, -videoView.getHeight());
                    animation.setInterpolator(new AccelerateInterpolator());
                }
                animation.setDuration(ANIMATION_DURATION);
                videoView.startAnimation(animation);
            }
        }
    });
}

关于android - 如何将 videoView 与 imageView 和 recyclerView 一起制作动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41254854/

相关文章:

java - 如何获取RecyclerView中当前滚动条的位置?

android - 错误 : Could not determine artifacts for androidx. cardview :cardview:1. 0.0:没有可用于离线模式的缓存版本

android - 生成无限循环的压缩方法

ios - 从顶部而不是固有大小的中心开始动画

jquery - 使用不透明动画显示隐藏元素

javascript - requestAnimationFrame 的目的是什么?重绘时间没有任何区别

java - 如何监听 RecyclerView 的 ItemTouchHelper 中的点击事件?

android - 以编程方式读取 Android logcat 时,并非显示所有数据

java - Firebase,在推送之前检查数据是否已经存在

android - 在 init.rc 中启用 logcat