2016-12-21 9 views
1

imageViewとrecyclerViewの上にあるvideoViewでanimateを使いたいです。最初はvideoViewの可視性がなくなっていて、recyclerViewのアイテムをクリックすると、アニメーションをスライディングしてvideoViewをVisibleにし、imageViewにアニメーションを使用してslideUpにして消してしまいます。どうやってやるの。私はレイアウトの前と後のスナップショットを与えました。アニメーションの前にimageViewとrecyclerViewと共にvideoViewをアニメーション化する方法は?

:アニメーション後

Before Animation

After Animation

答えて

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); 
      } 
     } 
    }); 
} 
関連する問題