2011-07-29 6 views
26

Actualmente estoy usando ViewFlipper para mi actividad principal con dos diseños diferentes. Quiero utilizar un tercer diseño, pero solo puedo encontrar los comandos showNext() y showPrevious(). ¿Puede alguien mostrarme cómo implementar un tercer diseño usando ViewFlipper?¿Cómo usar flipper de visualización con tres diseños?

+3

Si usted tiene 3 diseños en viewflipper, shownext() muestra la vista de forma secuencial, es decir shownext() aftrer segundo diseño muestra tercero diseño. – sat

+2

Intente utilizar este método: public void setDisplayedChild (int whichChild) para establecer sus vistas. – HenrikS

+0

¿Es posible pasar de la primera vista a la segunda vista a la primera y luego a la tercera? – user861040

Respuesta

55

He aquí un ejemplo que muestra cómo mostrar diferentes vistas en un ViewFlipper.

El diseño del ejemplo se compone de las siguientes partes. Hay tres botones de radio Un ViewFlipper se coloca debajo de los botones de radio. Esta aleta tiene tres vistas simples diferentes con diferentes textos.

Los botones de radio se conectan a un oyente en el código java que cambiará la vista que se muestra con ViewFlipper según el botón de opción que se elija actualmente.

XML

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

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

    <RadioGroup android:id="@+id/radioGroup1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
     <RadioButton android:layout_height="wrap_content" 
      android:id="@+id/radio0" android:layout_width="wrap_content" 
      android:text="Show View 1" android:checked="true"></RadioButton> 
     <RadioButton android:layout_height="wrap_content" 
      android:id="@+id/radio1" android:layout_width="wrap_content" 
      android:text="Show view 2"></RadioButton> 
     <RadioButton android:layout_height="wrap_content" 
      android:id="@+id/radio2" android:layout_width="wrap_content" 
      android:text="Show View 3"></RadioButton> 
    </RadioGroup> 

    <ViewFlipper android:id="@+id/ViewFlipper01" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
     <!--adding views to ViewFlipper--> 
     <TextView android:id="@+id/TextView01" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="First view is now displayed"></TextView> 
     <TextView android:id="@+id/TextView02" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Second view is now displayed"></TextView> 
     <TextView android:id="@+id/TextView03" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Third view is now displayed"></TextView> 
    </ViewFlipper> 

</LinearLayout> 

JAVA

package com.test.threeviews; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.RadioButton; 
import android.widget.ViewFlipper; 

public class ThreeViewsinaFlipperActivity extends Activity { 

    RadioButton RB0; 
    RadioButton RB1; 
    RadioButton RB2; 
    ViewFlipper VF; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     /* 
     * Find the views declared in main.xml. 
     */ 
     RB0 = (RadioButton) findViewById(R.id.radio0); 
     RB1 = (RadioButton) findViewById(R.id.radio1); 
     RB2 = (RadioButton) findViewById(R.id.radio2); 
     VF = (ViewFlipper) findViewById(R.id.ViewFlipper01); 

     /* 
     * Set a listener that will listen for clicks on the radio buttons and 
     * perform suitable actions. 
     */ 
     RB0.setOnClickListener(radio_listener); 
     RB1.setOnClickListener(radio_listener); 
     RB2.setOnClickListener(radio_listener); 
    } 

    /* 
    * Define a OnClickListener that will change which view that is displayed by 
    * the ViewFlipper 
    */ 
    private OnClickListener radio_listener = new OnClickListener() { 
     public void onClick(View v) { 
      switch (v.getId()) { 
      case R.id.radio0: 
       VF.setDisplayedChild(0); 
       break; 
      case R.id.radio1: 
       VF.setDisplayedChild(1); 
       break; 
      case R.id.radio2: 
       VF.setDisplayedChild(2); 
       break; 
      } 
     } 
    }; 
} 
+0

Escribir muchas gracias – user861040

+1

Muchas gracias por el código – user861040

4

Ver este simple uso de android.widget.ViewFlipper. Con ella se puede crear una disposición distinta de xml y luego cambiar entre ellos con el método simple como esto: ejemplo

ViewFlipper viewFlipper = (ViewFlipper) findViewById(R.id.myViewFlipper); 

    // you can switch between next and previous layout and display it 
    viewFlipper.showNext(); 
    viewFlipper.showPrevious(); 

    // or you can switch selecting the layout that you want to display 
    viewFlipper.setDisplayedChild(1); 
    viewFlipper.setDisplayedChild(viewFlipper.indexOfChild(findViewById(R.id.secondLayout) 

XML con diseños de árboles:

 <ViewFlipper 
      android:id="@+id/myViewFlipper" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" > 

      <LinearLayout 
       android:id="@+id/firstLayout" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:orientation="vertical" > 
       [...] 
      </LinearLayout> 

      <LinearLayout 
       android:id="@+id/secondLayout" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:orientation="vertical" > 
       [...] 
      </LinearLayout> 

      <LinearLayout 
       android:id="@+id/thirdLayout" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:orientation="vertical" > 
       [...] 
      </LinearLayout> 
     </ViewFlipper> 
0

Usted puede usarlo de esta manera también. He adjuntado el código java y el archivo xml donde se usa un botón para cambiar la vista flipper.

package com.nikhil.play.add_subtract; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.ViewFlipper; 

public class Flipper extends Activity implements OnClickListener { 

    ViewFlipper flippy; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_flipper); 
     flippy = (ViewFlipper) findViewById(R.id.viewFlipper1); 
     flippy.setOnClickListener(this); 
     flippy.setFlipInterval(10000); 
     flippy.startFlipping(); 
    } 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     flippy.showNext(); 
    } 

} 

XML CODE-

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <ViewFlipper 
     android:id="@+id/viewFlipper1" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" > 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Button" /> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Flipper 2" /> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Flipper 3" /> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Flipper 4" /> 
    </ViewFlipper> 

</LinearLayout> 
1

respuesta más simple es: USO 'FOR' BUCLE

1 solución de línea

// j = número de veces u quiere cambiar la vista

for(i=0;i<j;i++) viewFlipper.showNext(); 

Control th e viewFlipper, al variar el valor de 'j'.

Gracias

0

xml

<ViewFlipper 
    android:id="@+id/viewflip" 
    android:layout_width="match_parent" 
    android:layout_height="250dp" 
    android:layout_weight="1" 
    /> 

Java

public class BlankFragment extends Fragment{ 
ViewFlipper viewFlipper; 
FragmentManager fragmentManager; 

int gallery_grid_Images[]={drawable.image1, drawable.image2, drawable.image3, 
     drawable.image1, drawable.image2, drawable.image3, drawable.image1, 
     drawable.image2, drawable.image3, drawable.image1 
}; 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ 
    View rootView = inflater.inflate(fragment_blank, container, false); 
    viewFlipper =(ViewFlipper)rootView.findViewById(R.id.viewflip); 

    for(int i=0;i<gallery_grid_Images.length;i++) 
    { 
     // This will create dynamic image view and add them to ViewFlipper 
     setFlipperImage(gallery_grid_Images[i]); 

    } 

    return rootView; 

} 

private void setFlipperImage(int res) { 
    Log.i("Set Filpper Called", res+""); 
    ImageView image = new ImageView(getContext()); 
    image.setBackgroundResource(res); 
    viewFlipper.addView(image); 
    viewFlipper.setFlipInterval(1000); 
    viewFlipper.setAutoStart(true); 

}