2010-04-19 5 views
6

Estoy analizando datos a través del servicio web. Quiero que se dé la vuelta horizontalmente en lugar de verticalmente. Aquí hay un tutorial donde se usa ViewFlipper pero es para datos estáticos.¿Cómo puedo hacer una pantalla de volteo dinámica (como la de iPhone) en Android


Aquí es nuestro código donde tenemos que hacer zapping entre los 2 actividades:

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

¿Qué quiere decir "Aquí hay un tutorial donde se utiliza ViewFlipper"? –

+0

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

Respuesta

18

Puede añadir páginas a un ViewFlipper dinámicamente utilizando addView.

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

Dónde myView es la vista que desee agregar y, a myViewIndex es el índice en el viewflipper desea agregar esta nueva visión.

entonces se puede establecer las animaciones de preformas en el cambio de puntos de vista:

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

Entonces Para pasar a esta página se puede utilizar:

flipper.setDisplayedChild(myViewIndex); 

Dónde left_in.xml se define como

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

y left_out.xml es:

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

Supongamos que tenemos 2 actividades con sus respectivos archivos xml: Splash Activity -> splash.xml Actividad del menú - > menu.xml ¿Ahora cómo podemos cambiar entre estas 2 actividades? Eso es de splash a menú y viceversa. –

+0

Lo haremos si son dos actividades diferentes, entonces esta es una pregunta completamente diferente ya que no vas a usar ViewFlipper. Si solo tienen dos vistas distintas definidas en XML, simplemente las agregará a viewflipper y usar setDisplayedChild para alternar entre ellas. – stealthcopter

+0

¡Ya veo! Por lo tanto, es posible tener iPhone como flipping entre 2 actividades diferentes en Android. ¿Puede publicar el código requerido teniendo en cuenta el escenario anterior? Porque esto es algo que estamos haciendo por primera vez. –

-4

No sólo quiere la pantalla para girar basa fuera de la posición en que se encuentra detenido en (según lo determinado por los sensores acelerómetros)?

Si es así sólo tiene que añadir

android:screenOrientation="sensor" 

al nodo de actividad en su AndroidManifest.xml presentar

+0

Nada que ver con el acelerómetro. Quiero que mi página/pantalla se mueva como lo hace en iPhone. –

+0

Entonces, ¿estás preguntando sobre una animación de inversión entonces? La experiencia de mi iPhone es limitada, así que no está del todo claro cuando dices "voltear como lo hace en el iPhone" lo siento – snctln

3

acaba de tener un rápido vistazo para usted porque yo estaba seguro de que he visto a su alrededor antes, me encontré con this en 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. 

para que pueda agregar este parámetro adicional a su intención que definirá cómo la actividad que llame se animará a la entrada de una nueva actividad y a la salida de la actividad anterior.

+0

correcto y funciona como un encanto .. más se puede encontrar en http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/Animation.html una cosa importante. .este método es compatible con API Nivel 5 y superior como se menciona por stealthcopter también. –

Cuestiones relacionadas