2011-06-20 2 views
3

У меня есть множество просмотров, места в кинотеатре. Мне нужно применить набор анимаций (масштаб и перевод) к ним, чтобы сделать какой-то масштаб. Я применяю анимацию к каждому виду. Анимация выглядит следующим образом:Прокрутка после окончания анимации, android

AnimationSet set = new AnimationSet(context, null); 

    float toXDelta = (place.getX() * 2) - place.getX(); 
    float toYDelta = (place.getY() * 2) - place.getY(); 
    Animation translate = new TranslateAnimation(0, toXDelta, 0, toYDelta); 
    translate.setDuration(4000); 
    translate.setFillAfter(true); 
    translate.setFillEnabled(true); 

    Animation scale = new ScaleAnimation(1, 5, 1, 5); 
    scale.setDuration(4000); 
    scale.setFillAfter(true); 
    scale.setFillEnabled(true); 

    set.addAnimation(translate); 
    set.addAnimation(scale); 

    set.setFillAfter(true); 
    set.setAnimationListener(new KaroAnimationListener(this)); 

    animation = set; 

Итак, мой макет выглядит следующим образом:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_height="fill_parent" 
      android:orientation="vertical" 
      android:layout_width="fill_parent" 
      android:padding="10px"> 
<ScrollView android:layout_height="wrap_content" 
      android:layout_width="fill_parent" 
      android:layout_weight="0" 
      android:id="@+id/vertical_scroll" 
      android:fillViewport="true"> 
    <HorizontalScrollView 
      android:layout_height="fill_parent" 
      android:fillViewport="true" 
      android:id="@+id/scroll_view" 
      android:layout_width="wrap_content"> 
     <RelativeLayout android:id="@+id/scrollable_places" 
         android:layout_height="wrap_content" 
         android:layout_width="wrap_content"> 

     </RelativeLayout> 
    </HorizontalScrollView> 
</ScrollView> 

<Button android:layout_height="wrap_content" 
     android:layout_width="fill_parent" 
     android:id="@+id/reserve_places_button" 
     android:onClick="onReserveClick" 
     android:layout_below="@id/vertical_scroll" 
     android:layout_weight="1" 
     android:text="Bron!"/> 

Я положил свои взгляды в RelativeLayout с идентификатором scrollable_places. Итак, после окончания анимации некоторые из этих представлений выходят за пределы экрана, но прокрутки нет. Я предполагаю, что мне нужно переопределить dimentionsRelativeLayout or other, parent, layouts, но я не знаю, как это сделать вручную. Спасибо!

ответ

3

Вы можете попробовать опубликовать задержку: свиток с этой целью вашего ScrollView, как это:

scrollView.postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        scrollView.fullScroll(View.FOCUS_DOWN); 
       } 
      }, 4300); 

Так что он подходит, чтобы начать после окончания анимации или вы могли бы сделать это после того, как вы слушали конец вашей анимации AnimationListener, и в этом случае вы можете использовать меньшую задержку, чем 4300 мс, что-то около 300 будет делать.

С уважением, Stéphane

+0

спасибо! Он отлично работает с ScrollView, но если я хочу сделать тот же трюк с HorizontalScrollView (который имеет ScrollView как родительский элемент в моем макете), просто заменил View.FOCUS_DOWN на View.FOCUS_RIGHT, это не работает. Может, что-то не так с моим макетом? – arbuzz

+0

Вы также должны посмотреть здесь, на ваш вопрос с макетом. Эта нить касается горизонтальной и вертикальной прокрутки. http://stackoverflow.com/questions/2044775/scrollview-vertical-and-horizontal-in-android – Snicolas

+0

спасибо большое, это помогло! – arbuzz

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