簡體   English   中英

android viewpager中的幻燈片?

[英]Slideshow in android viewpager?

我有android viewpager幻燈片的問題。 我希望在最短時間后顯示viewpager布局。 這是我的代碼示例。 我的主要課程:

public class MainActivity extends Activity {
    private ViewPager mViewPager;
    private SwipeAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mViewPager = (ViewPager) findViewById(R.id.pager);
        // set the adapter
        adapter = new SwipeAdapter(MainActivity.this);
        mViewPager.setAdapter(adapter);

        mViewPager.setOnPageChangeListener(new OnPageChangeListener() {

            @Override
            public void onPageSelected(int position) {
            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
            }
            @Override
            public void onPageScrollStateChanged(int arg0) {
            }
        });
    }

}

我的適配器類:

public class SwipeAdapter extends PagerAdapter {

    private LayoutInflater mInflater;
    private static int[] mLayouts = { R.layout.view_layout1,
            R.layout.view_layout2, R.layout.view_layout3, R.layout.view_layout4 };

    SwipeAdapter(Context context) {
        mInflater = LayoutInflater.from(context);
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View) object);
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        ViewGroup pageView = (ViewGroup) mInflater.inflate(mLayouts[position],
                container, false);
        container.addView(pageView);
        getItemPosition(pageView);
        return pageView;
    }

    @Override
    public int getCount() {
        return mLayouts.length;
    }
    @Override
    public boolean isViewFromObject(View view, Object obj) {
        return view == obj;
    }
}

假設我想讓viewpager布局在10秒后自動滑動。 怎么可能呢。

使用處理程序使其自動滑動。 這是一些代碼

private Handler handler = new Handler();
private Runnable runnable = new Runnable() {
    public void run() {
            if( position >= 4){
                position = 0;
            }else{
                position = position+1;
            }
            toBarPager.setCurrentItem(position, true);
            handler.postDelayed(runnable, 10000);
    }
};

並且不要忘記刪除回調onPause()

@Override
public void onPause() {
    super.onPause();
    if (handler!= null) {
        handler.removeCallbacks(runnable);
    }
}

另外,不要忘記重新運行onResume()

@Override
public void onResume() {
    super.onResume();  // Always call the superclass method first
    handler.postDelayed(runnable, 10000);
}

使用Handler並發送[Empty] MessageDelayed / postDelayed並在ViewPager上調用setCurrentItem

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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