[英]Image slide using viewpager in Android
我使用viewpager從左到右滑動圖像,並且它的工作非常好。 但是,當向右滑動顯示最后一張圖像時,沒有任何反應。 我希望在顯示最后一張圖像時向右滑動第一張圖像...同樣地,我想要在顯示第一張圖像時向左滑動最后一張圖像...
會等一些線索..
我使用以下代碼:
public class PhotoFullActivity extends Activity{
private FlingViewPager viewPager;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
viewPager = new FlingViewPager(this);
setContentView(viewPager);
FlingAdapter adapter = new FlingAdapter(this, photoArrayList); //photoArrayList is the collection of phot path from SD card
viewPager.setAdapter(adapter);
}
================================================== ===============
public class FlingViewPager extends ViewPager {
public FlingViewPager(Context context) {
super(context);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
try {
return super.onInterceptTouchEvent(ev);
} catch (IllegalArgumentException e) {
e.printStackTrace();
return false;
}
catch (Exception e) {
e.printStackTrace();
return false;
}
}
}
================================================== =========
public class FlingAdapter extends PagerAdapter{
private Context context;
ArrayList<String> adapterList;
public FlingAdapter(Context context,ArrayList<String> adapterList)
{
this.context = context;
this.adapterList = adapterList;
}
public View instantiateItem(ViewGroup container, int position) {
PhotoView photoView = new PhotoView(container.getContext());
String photo_path = adapterList.get(position);
File file = new File(photo_path);
Bitmap bmp_thumb = BitmapFactory.decodeFile(file.getAbsolutePath());
photoView.setImageBitmap(bmp_thumb);
// Now just add PhotoView to ViewPager and return it
container.addView(photoView, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
return photoView;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return this.adapterList.size();
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
感謝和問候
您可能想看看InfiniteViewPager 。
對於您的FlingAdapter類:
int count;
@Override
public int getCount() {
//actually, not complete solution, but hope the idea would help you
//you could increase "count" variable in getView() when you're reaching bounds of array
count = this.adapterList.size()*2;
return count;
}
@Override
public <String> getItem(int position){
//for example, size of array is 5, so last index is 5-1=4;
//with position == 5, we should return index 0
int dataPosition = (position % (this.adapterList.size()-1))-1;
return this.adapterList.get(dataPosition);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.