如何使用imageView和recyclerView为videoView设置动画?

时间:2016-12-21 03:57:31

标签: android animation android-recyclerview android-videoview

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

动画前:

Before Animation

动画后:

After Animation

1 个答案:

答案 0 :(得分:1)

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

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);
            }
        }
    });
}