web-dev-qa-db-fra.com

Comment utiliser view flipper avec trois dispositions?

J'utilise actuellement ViewFlipper pour mon activité principale avec deux dispositions différentes. Je souhaite utiliser une troisième disposition, mais je ne trouve que les commandes showNext() et showPrevious(). Quelqu'un peut-il me montrer comment implémenter une troisième mise en page à l'aide de ViewFlipper?

30
user861040

Faites un exemple pour vous qui montre comment afficher différentes vues dans un ViewFlipper.

La disposition de l'exemple se compose des parties suivantes. Il y a trois boutons radio. Un ViewFlipper est placé sous les boutons radio. Ce flipper contient trois vues simples différentes avec des textes différents.

Les boutons radio sont ensuite connectés à un écouteur dans le code Java qui changera la vue affichée par ViewFlipper en fonction du bouton radio actuellement sélectionné.

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;
            }
        }
    };
}
61
HenrikS

Voir cette utilisation simple de Android.widget.ViewFlipper . Avec lui, vous pouvez créer une mise en page différente à partir de XML, puis basculer entre eux avec une méthode simple comme celle-ci:

   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)

Exemple XML avec des dispositions d'arborescence:

     <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>
6
lory105

Vous pouvez également l'utiliser de cette manière. J'ai joint le Java et fichier xml où un bouton est utilisé pour changer la vue 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();
    }

}

CODE XML-

<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>
4
Nikhil Kumar

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

}
1
Anita Kunjir