2010-04-19 4 views
6

Sto analizzando i dati tramite il servizio web. Voglio il flipping orizzontalmente piuttosto che verticalmente. Ecco un tutorial in cui viene utilizzato ViewFlipper, ma è per dati statici.Come posso creare uno schermo dinamico (come quello di iPhone) su Android


ecco il nostro codice in cui abbiamo bisogno di sfogliare tra le 2 attività:

Splash.java

public class Splash extends Activity{ 

     /** Called when the activity is first created. */ 

     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      setContentView(R.layout.main); 

        startActivity(new Intent(Splash.this, MainMenu.class)); 
        Splash.this.finish();          
     } 
    } 

Splash.xml

<?xml version="1.0" encoding="utf-8"?> 
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/splash"> 
</AbsoluteLayout> 

Menu.java

public class Menu extends Activity{ 

     /** Called when the activity is first created. */ 

     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState);    
      setContentView(R.layout.menu);          
     } 
    } 

Menu.xml

<?xml version="1.0" encoding="utf-8"?> 
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/menu"> 
</AbsoluteLayout> 
+2

Cosa vuoi dire "Ecco un tutorial in cui viene utilizzato ViewFlipper"? –

+0

controlla questo [risposta] (http://stackoverflow.com/questions/2651360/how-to-provide-animation-when-calling-another-activity-in-android/2651890#2651890) – Praveen

risposta

18

È possibile aggiungere pagine a un ViewFlipper utilizzando in modo dinamico addView.

flipper= (ViewFlipper) findViewById(R.id.flipper1); 
    flipper.addView(myView,myViewIndex); 

Dove myView è la vista che si desidera aggiungere, e myViewIndex è l'indice nel viewflipper si desidera aggiungere questa nuova visione.

È quindi possibile impostare le animazioni per preforme sulla modifica di visite:

flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.left_in)); 
    flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.left_out)); 

Poi di capovolgere a questa pagina è possibile utilizzare:

flipper.setDisplayedChild(myViewIndex); 

Dove left_in.xml è definito come

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/accelerate_interpolator"> 
    <translate 
    android:interpolator="@android:anim/decelerate_interpolator" 
    android:fromXDelta="100%p" 
    android:toXDelta="0" 
    android:duration="300" 
    /> 
</set> 

e left_out.xml è:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/accelerate_interpolator" 
    > 
    <translate 
    android:interpolator="@android:anim/decelerate_interpolator" 
    android:fromXDelta="0" 
    android:toXDelta="-100%p" 
    android:duration="300" 
    /> 
</set> 
+0

Supponiamo di avere 2 attività con i rispettivi file xml: Attività Splash -> splash.xml Attività menu - > menu.xml Ora come possiamo passare da queste 2 attività? Questo è da splash a menu e viceversa. –

+0

Lo faremo se si tratta di due attività diverse, quindi questa è una domanda completamente diversa in quanto non si utilizzerà ViewFlipper. Se sono solo due diverse viste definite in XML, allora le aggiungerei entrambe al viewflipper e usare setDisplayedChild per capovolgerle. – stealthcopter

+0

Vedo! Quindi è possibile avere iPhone come capovolgere tra 2 diverse attività in Android. Potete per favore pubblicare il codice richiesto tenendo conto dello scenario sopra. Perché questo è qualcosa che stiamo facendo per la prima volta in assoluto. –

-4

Vuoi solo lo schermo per ruotare in base al largo della posizione di essere tenuta in (come determinato dai sensori accelerometrici)?

Se è così basta aggiungere

android:screenOrientation="sensor" 

al nodo Attività nella vostra AndroidManifest.xml archiviare

+0

Niente a che fare con l'accelerometro. Voglio che la mia pagina/schermo si capovolga esattamente come fa in iPhone. –

+0

Allora, stai chiedendo un'animazione flipping? La mia esperienza iPhone è limitata, quindi non mi è del tutto chiaro quando dici "flip like it on the iPhone" mi spiace – snctln

3

Sono appena tornata da un rapido sguardo per voi, perché ero sicuro che ho visto in giro prima, ho trovato this su developer.android.com:

public void overridePendingTransition (int enterAnim, int exitAnim) 

Since: API Level 5 
Call immediately after one of the flavors of startActivity(Intent) or finish() to specify an explicit transition animation to perform next. 
Parameters 
enterAnim A resource ID of the animation resource to use for the incoming activity. Use 0 for no animation. 
exitAnim A resource ID of the animation resource to use for the outgoing activity. Use 0 for no animation. 

in modo da poter aggiungere questo parametro in più per la vostra intento che definirà come l'attività che chiamate si animerà all'ingresso di nuove attività e all'uscita dalla vecchia attività.

+0

corretto e funziona come un fascino .. più può essere trovato a http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/Animation.html una cosa importante. Questo metodo è supportato in API Livello 5 e sopra, come menzionato anche da stealthcopter. –