Как использовать флиппер с тремя макетами?

В настоящее время я использую ViewFlipper для моей основной деятельности с двумя разными макетами. Я хочу использовать третий макет, но я могу найти только команды showNext() и showPrevious() . Может ли кто-нибудь показать мне, как реализовать третий макет с помощью ViewFlipper ?

Solutions Collecting From Web of "Как использовать флиппер с тремя макетами?"

Сделал пример для вас, который показывает, как отображать разные виды в ViewFlipper.

Схема примера состоит из следующих частей. Есть три переключателя. Под переключателями находится ViewFlipper. Этот флиппер содержит три разных простых вида с разными текстами.

Радиокнопки затем подключаются к слушателю в java-коде, который изменит представление, отображаемое ViewFlipper, в зависимости от выбранного переключателя.

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> 

ЯВА

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

Смотрите это простое использование android.widget.ViewFlipper . С его помощью вы можете создать другой макет из xml, а затем переключиться между ними с помощью простого метода:

  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 с макетами дерева:

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

Самый простой ответ: USE 'FOR' LOOP

Однострочное решение

// j = количество раз, когда вы хотите переместить вид

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

Управляйте viewFlipper, изменяя значение «j».

благодаря

Вы также можете использовать его таким же образом. Я прикрепил java-код и xml-файл, где кнопка используется для изменения вида флиппера.

 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> 

XML

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

Ява

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