2012-09-18 36 views
4

我希望我的ViewPager實現在視圖之間循環,而不是在最後一個視圖處停止。例如,如果我有3個視圖要通過ViewPager顯示,它應該在第三個視圖之後返回到第一個視圖,而不是在第三個視圖中停止。當用戶在最後一頁上向前閃動時,我希望它返回到第一頁/視圖如何讓viewpager循環?

循環示例;

A,B,C,d < --- A,B,C,d ---> A,B,C,d

非常感謝,

Mypageradapter;

package com.example.pictures; 

import android.content.Context; 
import android.media.AudioManager; 
import android.os.Parcelable; 
import android.support.v4.view.PagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.view.LayoutInflater; 
import android.view.View; 


public class MyPagerAdapter extends PagerAdapter{ 

public int getCount() { 
    return 6; 
} 

public Object instantiateItem(View collection, int position) { 

    View view=null; 

    LayoutInflater inflater = (LayoutInflater) collection.getContext() 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    int resId = 0; 
    switch (position) { 
    case 0: 
     resId = R.layout.picture1; 
     view = inflater.inflate(resId, null);   
     break; 
    case 1: 
     resId = R.layout.picture2; 
     view = inflater.inflate(resId, null); 
     break; 
    case 2: 
     resId = R.layout.picture3; 
     view = inflater.inflate(resId, null); 
     break; 
    case 3: 
     resId = R.layout.picture4; 
     view = inflater.inflate(resId, null); 
     break; 
    case 4: 
     resId = R.layout.picture5; 
     view = inflater.inflate(resId, null); 
     break; 
    case 5: 
     resId = R.layout.picture6; 
     view = inflater.inflate(resId, null); 
     break; 
    } 

    ((ViewPager) collection).addView(view, 0); 

    return view; 
} 

@SuppressWarnings("unused") 
private Context getApplicationContext() { 
    // TODO Auto-generated method stub 
    return null; 
} 


private void setVolumeControlStream(int streamMusic) { 
    // TODO Auto-generated method stub 

} 


@SuppressWarnings("unused") 
private Context getBaseContext() { 
    // TODO Auto-generated method stub 
    return null; 
} 


@SuppressWarnings("unused") 
private PagerAdapter findViewById(int myfivepanelpager) { 
    // TODO Auto-generated method stub 
    return null; 
} 

@Override 
public void destroyItem(View arg0, int arg1, Object arg2) { 
    ((ViewPager) arg0).removeView((View) arg2); 
} 

@Override 
public boolean isViewFromObject(View arg0, Object arg1) { 
    return arg0 == ((View) arg1); 

} 

@Override 
public Parcelable saveState() { 
    return null; 
} 

public static Integer getItem(int position) { 
    // TODO Auto-generated method stub 
    return null; 
} 

} 

OnPageChangeListener;

package com.example.pictures; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.view.ViewPager; 
import android.support.v4.view.ViewPager.OnPageChangeListener; 
import android.view.View; 
import android.widget.Button; 
import android.widget.Toast; 


public class Pictures extends Activity implements OnPageChangeListener{ 
SoundManager snd; 
int sound1,sound2,sound3; 
View view=null; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.picturespage); 

MyPagerAdapter adapter = new MyPagerAdapter(); 
ViewPager myPager = (ViewPager) findViewById(R.id.myfivepanelpager); 
myPager.setAdapter(adapter); 
myPager.setCurrentItem(0); 
myPager.setOnPageChangeListener(this); 
snd = new SoundManager(this); 
sound1 = snd.load(R.raw.sound1); 
sound2 = snd.load(R.raw.sound2); 
sound3 = snd.load(R.raw.sound3); 

} 
public void onPageScrollStateChanged(int arg0) { 
    // TODO Auto-generated method stub 

} 

public void onPageScrolled(int arg0, float arg1, int arg2) { 
    // TODO Auto-generated method stub 

} 

public void onPageSelected(int position) { 
    // TODO Auto-generated method stub 

    switch (position) { 
    case 0: 
      snd.play(sound1); 
     break; 
    case 1: 
     snd.play(sound2); 
     break; 
    case 2: 
      snd.play(sound3); 
     break; 
    case 3: 
     Toast.makeText(this, "1", Toast.LENGTH_SHORT).show(); 
     break; 
    case 4: 
     Toast.makeText(this, "2", Toast.LENGTH_SHORT).show(); 
     break; 
    case 5: 
     Toast.makeText(this, "3", Toast.LENGTH_SHORT).show(); 
     break; 
    } 
} 
}; 
+0

您是否收到任何錯誤?上述代碼的任何問題?明確提及。 – Randroid

+0

我沒有收到錯誤。我的問題,不返回到第一頁(如果最後一頁)。 –

+0

@ErdemAzaklı:看到我的回答 – Shruti

回答

4

ü需要創建一個圓形適配器像有所示,然後使用該適配器:

class MyGestureDetector extends SimpleOnGestureListener { 
     @Override 
     public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
      try { 
       if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) 
        return false; 
       // right to left swipe 
       if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
        Toast.makeText(SelectFilterActivity.this, "Left Swipe", Toast.LENGTH_SHORT).show(); 
       } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
        Toast.makeText(SelectFilterActivity.this, "Right Swipe", Toast.LENGTH_SHORT).show(); 
       } 
      } catch (Exception e) { 
       // nothing 
      } 
      return false; 
     } 

    } 

上面的代碼就是從這裏Fling gesture detection on grid layout

複製見下回答過:

Implementing Circular Scrolling In PagerAdapter