2011-07-29 2 views
26

현재 두 개의 다른 레이아웃을 사용하여 내 주요 활동에 ViewFlipper을 사용하고 있습니다. 세 번째 레이아웃을 사용하고 싶지만 showNext()showPrevious() 명령 만 찾을 수 있습니다. 다른 사람이 ViewFlipper을 사용하여 세 번째 레이아웃을 구현하는 방법을 보여 줄 수 있습니까?레이아웃이 세 개인 뷰 플리퍼를 사용하는 방법은 무엇입니까?

+3

당신이 viewflipper 3 개 레이아웃이있는 경우는, showNext()는보기 순차적으로, 2 레이아웃 aftrer 즉 showNext() 3 레이아웃을 보여줍니다 보여줍니다. – sat

+2

이 메서드를 사용하여보십시오 : public void setDisplayedChild (int whichChild) 뷰를 설정합니다. – HenrikS

+0

첫 번째보기에서 두 번째보기로 돌아가서 처음부터 다시 세 번째보기로 이동할 수 있습니까? – user861040

답변

55

ViewFlipper에서 다른보기를 표시하는 방법을 보여주는 예제를 작성했습니다.

예제의 레이아웃은 다음 부분으로 구성됩니다. 3 개의 라디오 버튼이 있습니다. ViewFlipper는 라디오 버튼 아래에 배치됩니다. 이 플리퍼는 텍스트가 다른 세 가지 간단한보기를 보유하고 있습니다.

라디오 버튼은 현재 선택된 라디오 버튼에 따라 ViewFlipper가 표시하는보기를 변경하는 Java 코드의 리스너에 연결됩니다.

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

고마워요. – user861040

+1

고맙습니다. – user861040

4

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

또한이 방법으로 사용할 수 있습니다. 플리퍼보기를 변경하는 데 사용되는 단추와 자바 코드 및 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 코드 -이

<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

간단한 답은 'for'루프 사용

1 라인 솔루션

// J = 횟수는 u는 뷰를 이동하려면

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

제어 th e viewFlipper의 값을 'j'값으로 변경합니다.

감사

0

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

} 
관련 문제