簡體   English   中英

在Android中使用viewpager的圖片幻燈片

[英]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

Chech這兩個答案Link1Link2 ,我相信你會找到一個解決方案。

對於您的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM