2010-08-12 29 views
5

Sto cercando di utilizzare ViewFlipper per aggiungere un'animazione tra le viste, come nel seguire un tutorial sull'argomento. Tuttavia, sembra che non voglia lavorare. Cambierà le pagine, ma non ho animazione, anche se aggiungo un enorme ritardo a push_left_in.Nessuna animazione con ViewFlipper?

Ecco la mia 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 proviene dai campioni di Google. Ecco l'azione trigger:


    @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) 

E mio layout:

 

<?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> 

 

Pensieri?

+0

Niente salta fuori di me, anche se non ho usato un MapView in un ViewFlipper prima. FWIW, ecco un esempio di progetto che mostra le animazioni con ViewFlipper, nel caso in cui aiuti: http://github.com/commonsguy/cw-android/tree/master/Fancy/Flipper2/ – CommonsWare

+0

@CommonsWare hai rimosso le animazioni da esempio. Qual'era il problema? – ohhorob

+0

@ohhorob: mi dispiace. Era solo per semplificare l'esempio del libro, dal momento che non mi occupo di animazioni da nessun'altra parte in quel particolare libro. – CommonsWare

risposta

11

Provare a impostare le animazioni nel file xml.

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

Questo ha fatto il trucco - grazie! Una nota per gli altri con questo problema: non sono stato in grado di vedere la correzione funzionare immediatamente tramite l'emulatore, a causa della bassa frequenza dei fotogrammi dell'emulatore - ma un ritardo extra mi consente di vederlo. Ancora, grazie, shwiz! – Karen

0

È necessario impostare le animazioni di entrata e uscita separatamente. Si può fare in 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"> 

o nel codice:

viewFlipper.setInAnimation(getActivity(), R.anim.in_from_right); 
viewFlipper.setOutAnimation(getActivity(), R.anim.out_to_left); 
Problemi correlati