2016-12-21 2 views
1

Я хочу использовать анимацию на videoView, которая находится над изображениемView и recyclerView. Во-первых, видимость видеоизображения Gone и когда я нажимаю на элемент в recyclerView, я хочу сделать видеоизображение видимым с анимацией, сползающей вниз, а также использовать анимацию для ImageView для SlideUp и сделать ее Gone. Как я могу это сделать. Я дал снимок до и после макета.Как анимировать videoView вместе с imageView и recyclerView?

Перед Animation:

Before Animation

После анимации:

After Animation

ответ

1

Это то, что я сделал для подобной ситуации. В вашем макете вам нужно поставить оба вида один над другим (в точках, где они должны появиться). Добавьте глобальный приемник макетов в videoView/imageView один раз в onCreate, а затем просто измените видимость соответствующего представления. Этот код можно использовать повторно с помощью 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); 
      } 
     } 
    }); 
} 
Смежные вопросы