2011-07-29 14 views
26

Obecnie używam ViewFlipper do mojej głównej aktywności z dwoma różnymi układami. Chcę użyć trzeciego układu, ale mogę znaleźć tylko polecenia showNext() i showPrevious(). Czy ktoś może mi pokazać, jak zaimplementować trzeci układ za pomocą ViewFlipper?Jak korzystać z widoku flipper z trzema układami?

+3

Jeśli masz 3 układy w viewflipper, showNext() pokazuje widok sekwencyjnie, tzn showNext() aftrer 2. układ pokazuje 3rd układ. – sat

+2

Spróbuj użyć tej metody: public void setDisplayedChild (int whichChild), aby ustawić swoje widoki. – HenrikS

+0

Czy można przejść z pierwszego widoku do drugiego widoku z powrotem do pierwszego, a następnie trzeciego widoku? – user861040

Odpowiedz

55

Wykonaliśmy dla Ciebie przykład pokazujący, jak wyświetlać różne widoki w ViewFlipper.

Układ przykładu składa się z następujących części. Dostępne są trzy przyciski opcji. A ViewFlipper jest umieszczony pod przyciskami radiowymi. Ta klapka posiada trzy różne proste widoki z różnymi tekstami.

Przyciski radiowe są następnie podłączane do odbiornika w kodzie Java, który zmieni widok wyświetlany przez ViewFlipper w zależności od tego, który przycisk radiowy jest aktualnie wybrany.

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

Napisz dziękuję za dużo – user861040

+1

Dzięki dużo za kod – user861040

4

Zobacz ten prosty wykorzystanie android.widget.ViewFlipper. Dzięki niemu można tworzyć inny układ z XML, a następnie przełączać się między nimi w prosty sposób tak: przykład

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 z układami drzewa:

 <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

Można go używać w ten sposób również. Dołączyłem kod java i plik xml, w których przycisk służy do zmiany widoku flippera.

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

Najprostsza odpowiedź brzmi: USE 'dla' LOOP

1 rozwiązanie linia

// j = ilość razy u chcą przesunąć widok

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

Sterowanie e viewFlipper, zmieniając wartość "j".

Dzięki

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

} 
Powiązane problemy