首先第一种方法,可以随便滑动使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;
}
}
});
}
}
至于适配器两个都大同小异所以我只写了一个适配器