【安卓-自定义布局】安卓App开发思路 一步一个脚印(七)实现ViewPager无限循环与自动播放

实现ViewPager无限循环与自动播放

      自动播放,无非就是将ViewPager长度加到很大很大,大到无聊用户滑到手机没电为止,

ViewPager实现滑动的监听,从而实现我要你滑到哪里你就去哪里。

mviewpager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        currentItem = position;

    }

    @Override
    public void onPageSelected(int position) {

    }

    @Override
    public void onPageScrollStateChanged(int state) {

    }
});

关键函数 

mViewPager.setCurrentItem(currentItem);

//设置ViewPager的默认项, 设置为长度的100倍,这样子开始就能往左滑动  
mViewPager.setCurrentItem((mImageViews.length) * 100);  
 

启动自动滚动的子线程

@Override
public void onResume() {
    super.onResume();
    //activity启动两秒钟后,发送一个message,用来将viewPager中的图片切换到下一个
    mHandler.sendEmptyMessageDelayed(1, 2000);
}

@Override
public void onStop() {
    super.onStop();
    //停止viewPager中图片的自动切换
    mHandler.removeMessages(1);
}

Handler

 
private Handler mHandler = new Handler() {
    public void handleMessage(android.os.Message msg) {
        switch(msg.what) {
            case 1:
                mviewpager.setCurrentItem(currentItem + 1);

                //每两秒钟发送一个message,用于切换viewPager中的图片
                this.sendEmptyMessageDelayed(1, 2000);
        }
    }
};

适配器

@Override
public int getCount() {
    return Integer.MAX_VALUE/2;
}

@Override
public boolean isViewFromObject(View view, Object object) {
    return view==object;
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
    container.removeView(marrayList.get(position%marrayList.size()));
}

@Override
public Object instantiateItem(ViewGroup container, int position) {
    View v = marrayList.get(position%marrayList.size());
    //防止v被添加前存在与另一个父容器中 如果View已经在之前添加到了一个父组件,则必须先remove,否则会抛出IllegalStateException。  
    if (v.getParent() != null) { 
        ((ViewGroup) v.getParent()).removeView(v);
    }
    container.addView(v);
    return v;


}

备注,图片必须大于3张.


其他可参考链接: http://blog.csdn.net/xiaanming/article/details/8966621

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值