关于ViewPager无限轮播一些方法

首先第一种方法,可以随便滑动使radioGroup一起滑动

public class MainActivity extends Activity {

private ViewPager viewPager;
private List<Integer> list;
private RadioGroup radioGroup;
private Handler handler=new Handler(){
public void handleMessage(android.os.Message msg) {
//接受handler发送的消息
if(msg.what==0){
int i=0;
//接受Viewpager显示图片的位置
i=viewPager.getCurrentItem();
viewPager.setCurrentItem(i+1);
} };};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取资源ID
        viewPager=(ViewPager) findViewById(R.id.viewpager);
        radioGroup=(RadioGroup) findViewById(R.id.radiogroup);
        list=new ArrayList<Integer>();
        //存放图片数据
        list.add(R.drawable.c);
        list.add(R.drawable.d);
        list.add(R.drawable.e);
        //将Activity  数据源 交给adapter
        ViewPagerAdapter adapter=new ViewPagerAdapter(list, this);
        viewPager.setAdapter(adapter);
        //没过2秒自动向Handler发送一条消息 切换图片
        new Thread(){
        public void run() {
        while (true) {
try {
sleep(2000);
handler.sendEmptyMessage(0);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }};}.start();        
        //将显示图片的位置设置到 中间  可以往左滑
        viewPager.setCurrentItem(list.size()*10000);    
        //监听选中的页数的
        viewPager.setOnPageChangeListener(new OnPageChangeListener() {
//选择的页数
@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
//通过图片的位置选中Button
switch (arg0%list.size()) {
case 0:
radioGroup.check(R.id.but1);
break;
case 1:
radioGroup.check(R.id.but2);
break;
case 2:
radioGroup.check(R.id.but3);
break;
default:
break;
} }
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub

} });            }}

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

public class ViewPagerAdapter extends PagerAdapter{
private List<Integer> list;
private Context context;//上下文  当前的Activity
public ViewPagerAdapter(List<Integer> list, Context context) {
super();
this.list = list;
this.context = context;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return Integer.MAX_VALUE;//将图片的数量设置到无限大
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0==arg1;
}
//创建视图
@Override
public Object instantiateItem(ViewGroup container, int position) {
// TODO Auto-generated method stub
//创建ImagetView
ImageView imageView=new ImageView(context);
//将数据设置给ImafeView
imageView.setImageResource(list.get(position%list.size()));
container.addView(imageView);
return  imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View)object);
}
}
================================================================================================================

第二种是在一的基础上使点击radioGroup可以切换viewpager界面

public class MainActivity extends Activity {
private ViewPager viewPager;
private List<View> list;
private RadioGroup radioGroup;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取资源ID
        viewPager=(ViewPager) findViewById(R.id.viewpager);
        list=new ArrayList<View>();
        radioGroup=(RadioGroup) findViewById(R.id.radiogroup);
       
        ImageView imageView1=new ImageView(this);
        imageView1.setImageResource(R.drawable.a);
        //将图片拉伸
        imageView1.setScaleType(ScaleType.FIT_XY);
        
        ImageView imageView2=new ImageView(this);
        imageView2.setImageResource(R.drawable.c);
        //将图片拉伸
        imageView2.setScaleType(ScaleType.FIT_XY);
        
        ImageView imageView3=new ImageView(this);
        imageView3.setImageResource(R.drawable.d);
        //将图片拉伸
        imageView3.setScaleType(ScaleType.FIT_XY);
        
        ImageView imageView4=new ImageView(this);
        imageView4.setImageResource(R.drawable.e);
        //将图片拉伸
        imageView4.setScaleType(ScaleType.FIT_XY);
        
        //讲图片布局添加到List集合当中
        list.add(imageView1);
        list.add(imageView2);
        list.add(imageView3);
        list.add(imageView4);
        //获取适配器
        ViewPagerAdapter adapter=new ViewPagerAdapter(list);
        viewPager.setAdapter(adapter);
        //监听ViewPager
        viewPager.setOnPageChangeListener(new OnPageChangeListener() {
//选择当前的图片
@Override
public void onPageSelected(int position) {
// TODO Auto-generated method stub
//通过的到图片选中的位置去设置radioButton
switch (position) {
case 0:
//通过radioGroup检查radioButton
radioGroup.check(R.id.but1);
break;
case 1:
radioGroup.check(R.id.but2);
break;
case 2:
radioGroup.check(R.id.but3);
break;
case 3:
radioGroup.check(R.id.but4);
break;


default:
break;
}
}
//
@Override
public void onPageScrolled(int position, float positionOffset,
int positionOffsetPixels) {
// TODO Auto-generated method stub
//偏移值
// Log.i("TAG", "positionOffset"+positionOffset);
// Log.i("TAG", "positionOffsetPixels"+positionOffsetPixels);
}
//还动改变的方法
/***

* ViewPager#SCROLL_STATE_IDLE   停止   0
* ViewPager#SCROLL_STATE_DRAGGING  拖动   1
* ViewPager#SCROLL_STATE_SETTLING  弹回   2

*/
@Override
public void onPageScrollStateChanged(int state) {
// TODO Auto-generated method stub
// Log.i("TAG", "state"+state);
}
});       
        //通过对radioGroup选中监听来判断radioButton对应的是那张图片
        radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// TODO Auto-generated method stub
//如果检查ID跟选中radioButton的ID相互匹配 那么就选中那张图片
switch (checkedId) {
case R.id.but1:
//设置默认选中的图片
viewPager.setCurrentItem(0);
break;
case R.id.but2:
viewPager.setCurrentItem(1);
break;
case R.id.but3:
viewPager.setCurrentItem(2);
break;
case R.id.but4:
viewPager.setCurrentItem(3);
break;
default:
break;
}
}
});        
    }   
}

至于适配器两个都大同小异所以我只写了一个适配器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值