2010-08-12 4 views
5

Я пытаюсь использовать ViewFlipper для добавления анимации между представлениями, как в следующем учебном пособии по этому вопросу. Однако он просто не хочет работать. Это изменит страницы, но я не получаю анимацию - даже если я добавлю огромную задержку для push_left_in.Без анимации с ViewFlipper?

Вот мой OnCreate:


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     viewFlipper = (ViewFlipper)findViewById(R.id.flipper); 
     viewFlipper.setAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in)); 
     mapView = (MapView)findViewById(R.id.mapView); 
     mapView.setBuiltInZoomControls(true); 
    } 

push_left_in приходит из образцов Google. Вот действие триггера:


    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle item selection 
     switch (item.getItemId()) { 
     case R.id.button_map: 
      viewFlipper.setDisplayedChild(0); 
      return true; 
     case R.id.button_conditions_general: 
      viewFlipper.setDisplayedChild(1); 
      return true; 
(etc) 

И мой макет:

 

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout android:id="@+id/mainlayout" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       xmlns:android="http://schemas.android.com/apk/res/android"> 

    <ViewFlipper android:id="@+id/flipper" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent"> 

    <view class="com.google.android.maps.MapView" 
      android:id="@+id/mapView" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:clickable="true" 
      android:apiKey="MY_API_KEY" 
      /> 

    <TableLayout 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:background="#ffffff" 
       android:stretchColumns="1" 
       > 
     <TableRow> 
     <TextView android:id="@+id/field1" 
        android:layout_column="1"   
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:textColor="#000000" 
        android:textStyle="bold" 
        android:textSize="18px" 
        android:text="@string/field1" 
        > 
     </TextView> 
     <EditText android:text="100" 
        android:id="@+id/field2" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"> 
     </EditText> 
     <TextView android:id="@+id/field3" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:textColor="#000000" 
        android:textStyle="bold" 
        android:textSize="18px" 
        android:text="%" 
        > 
     </TextView> 
     </TableRow> 
    </TableLayout> 

    </ViewFlipper> 
</LinearLayout> 

 

Мысли?

+0

Ничто не перескакивает на меня, хотя я не использовал MapView в ViewFlipper раньше. FWIW, вот пример проекта, показывающий анимацию с помощью ViewFlipper, в случае, если это помогает: http://github.com/commonsguy/cw-android/tree/master/Fancy/Flipper2/ – CommonsWare

+0

@CommonsВы удалили анимацию из этого пример. В чем была проблема? – ohhorob

+0

@ohhorob: Извините. Это просто упростить пример книги, поскольку я не занимаюсь анимацией нигде в этой конкретной книге. – CommonsWare

ответ

11

Попробуйте настроить анимацию в XML-файле.

<ViewFlipper android:id="@+id/flipper" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:inAnimation="@anim/push_left_in"> 
+0

Что сделал трюк - спасибо! Одна нота для других с этой проблемой: я не мог сразу увидеть, как исправление работает через эмулятор, из-за низкой частоты кадров эмулятора - но дополнительная задержка позволяет мне видеть это. Снова, спасибо, shwiz! – Karen

0

Необходимо настроить анимацию в режиме «вкл» и «выкл» отдельно. Вы можете сделать это в XML:

<ViewFlipper 
    android:id="@+id/view_flipper" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:inAnimation="@anim/in_from_right" 
    android:outAnimation="@anim/out_to_left"> 

или в коде:

viewFlipper.setInAnimation(getActivity(), R.anim.in_from_right); 
viewFlipper.setOutAnimation(getActivity(), R.anim.out_to_left); 
Смежные вопросы