【问题标题】:Slideshow in android viewpager?android viewpager中的幻灯片?
【发布时间】:2013-05-11 07:14:13
【问题描述】:

我在使用 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 秒后自动滑动。怎么可能。

【问题讨论】:

标签: android android-viewpager


【解决方案1】:

使用Handler 使其自动滑动。这是一些代码

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

【讨论】:

  • 从哪里获得 positionPagerMoved
  • 您的情况没有必要,我编辑了我的代码。很抱歉造成混乱。
  • 而且位置总是从零开始,编辑位置>=3。谢谢。您的代码运行良好。
  • 我们必须把这个句柄放在主类的什么地方?如果是,那么在哪个方法中
  • 如果用户在视图分页器中使用滑动手势滑动当前图像,此时如何处理自动幻灯片放映位置
【解决方案2】:

使用 Handler 并发送 [Empty]MessageDelayed/postDelayed 并在您的 ViewPager 上调用 setCurrentItem

【讨论】:

    猜你喜欢
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多