2015-02-25 5 views
2

Я использую Rotate3dAnimation для отображения карты, содержащей ScrollView. Но во время анимации ScrollView теряет клип, поэтому я вижу верх и низ содержимого ScrollView вне рамки просмотра карты (и ScrollView) до тех пор, пока анимация не будет выполнена.Android ScrollView проигрывает клип на анимации вращения

Почему это и как победить это поведение?

ответ

2

Это, к сожалению, происходит из-за того, как рассчитываются границы для ScrollView. Кажется, что границы не «повернуты» вместе с точкой зрения.

Одна работа заключается в том, чтобы сделать снимок каждого вида - как спереди, так и сзади карты - и затем оживить между этими моментальными снимками над фактическими видами.

Код будет выглядеть примерно так:

firstView.setDrawingCacheEnabled(true); 
firstAnimationView.setBackgroundDrawable(new BitmapDrawable(firstView.getDrawingCache())); 

secondView.setDrawingCacheEnabled(true); 
secondAnimationView.setBackgroundDrawable(new BitmapDrawable(secondView.getDrawingCache())); 

Animation flipOutAnimation = createFlipOutAnimation(); 

flipOutAnimation.setAnimationListener(new Animation.AnimationListener() { 

     @Override 
     public void onAnimationEnd(Animation animation) { 
      firstAnimationView.setVisibility(View.GONE); 
     } 

     ... 

    }); 

Animation flipInAnimation = createFlipInAnimation(); 

flipInAnimation.setAnimationListener(new Animation.AnimationListener() { 

     @Override 
     public void onAnimationEnd(Animation animation) { 

      animationBackgroundView.setVisibility(View.GONE); 
      secondAnimationView.setVisibility(View.GONE); 
     } 

     ... 

    }); 

firstAnimationView.startAnimation(flipOutAnimation); 
secondAnimationView.startAnimation(flipInAnimation); 

animationBackgroundView.setVisibility(View.VISIBLE); 
firstAnimationView.setVisibility(View.VISIBLE); 
secondAnimationView.setVisibility(View.VISIBLE); 

Для обратной совместимости флип анимации, я использую http://genzeb.github.io/flip/

 Смежные вопросы

  • Нет связанных вопросов^_^