2011-07-29 32 views
26

Tôi hiện đang sử dụng ViewFlipper cho hoạt động chính của mình với hai bố cục khác nhau. Tôi muốn sử dụng bố cục thứ ba, nhưng tôi chỉ có thể tìm thấy các lệnh showNext()showPrevious(). Ai đó có thể chỉ cho tôi cách triển khai bố cục thứ ba bằng cách sử dụng ViewFlipper không?Cách sử dụng trình xem flipper với ba bố cục?

+3

Nếu bạn có 3 bố trí trong viewflipper, showNext() cho thấy quan điểm liên tục, ví dụ: showNext() aftrer bố trí 2 cho thấy cách bố trí thứ 3. – sat

+2

Thử sử dụng phương pháp này: public void setDisplayedChild (int whichChild) để đặt chế độ xem của bạn. – HenrikS

+0

Có thể chuyển từ chế độ xem đầu tiên sang chế độ xem thứ hai về đầu tiên và sau đó đến chế độ xem thứ ba không? – user861040

Trả lời

55

Làm ví dụ cho bạn cho thấy cách hiển thị các chế độ xem khác nhau trong ViewFlipper.

Bố cục của ví dụ được tạo thành từ các phần sau. Có ba nút radio. Một ViewFlipper được đặt bên dưới các nút radio. Flipper này giữ ba quan điểm đơn giản khác nhau với các văn bản khác nhau.

Các nút radio sau đó được nối với người nghe trong mã java sẽ thay đổi chế độ xem được hiển thị bởi ViewFlipper tùy thuộc vào nút radio hiện được chọn.

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

Viết cảm ơn rất nhiều – user861040

+1

Cảm ơn rất nhiều vì mã – user861040

4

Xem này sử dụng đơn giản của android.widget.ViewFlipper. Với nó, bạn có thể tạo bố cục khác nhau từ xml và sau đó chuyển đổi giữa chúng bằng phương pháp đơn giản như thế này: ví dụ

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 với cách bài trí cây:

 <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

Bạn có thể sử dụng nó theo cách này cũng có. Tôi đã đính kèm mã java và tệp xml nơi một nút được sử dụng để thay đổi chế độ xem 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 số-

<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

đơn giản trả lời là: SỬ DỤNG 'CHO' LOOP

1 giải pháp dòng

// j = số lần u muốn thay đổi quan điểm

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

Kiểm soát thứ e viewFlipper, bằng cách thay đổi giá trị của 'j'.

Cảm ơn

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

} 
Các vấn đề liên quan