//MainActivity
package com.example.viewpager;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RadioGroup;
import android.widget.Scroller;
public class MainActivity extends Activity {
ViewPager viewpager;
RadioGroup group;
List<Integer> list;
Handler handler = new Handler(){
public void handleMessage(Message msg) {
super.handleMessage(msg);
int currentItem = viewpager.getCurrentItem();
currentItem++;
viewpager.setCurrentItem(currentItem);
sendmsg();
};
};
public void sendmsg(){
handler.sendEmptyMessageDelayed(1, 3000);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewpager = (ViewPager) findViewById(R.id.viewpager);
group = (RadioGroup) findViewById(R.id.group);
// 数据
list = new ArrayList<Integer>();
list.add(R.drawable.a);
list.add(R.drawable.f);
list.add(R.drawable.c);
list.add(R.drawable.ff);
list.add(R.drawable.e);
sendmsg();
viewpager.setAdapter(new Madapter());
// 解决 刚启动无法向右滑动的问题
viewpager.setCurrentItem(list.size()*1000);
// 监听
viewpager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
switch (arg0 % list.size()) {
case 0:
//group可以选中某个ID元素
group.check(R.id.btn1);
break;
case 1:
group.check(R.id.btn2);
break;
case 2:
group.check(R.id.btn3);
break;
case 3:
group.check(R.id.btn4);
break;
case 4:
group.check(R.id.btn5);
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
}
});
}
class Madapter extends PagerAdapter {
@Override
public int getCount() {
// TODO Auto-generated method stub
return Integer.MAX_VALUE; // 最大值
}
/**
* 当前返回的 view和集合中的对象 是不是一个;
*
* @param view
* @param object
* @return
*/
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == arg1;
}
/**
* 销毁当前条目,viewpager默认加载三个view, 滑动页面时,会销毁多余view;
*
* @param container
* @param position
* @param object
*/
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// TODO Auto-generated method stub
container.removeView((View) object);
}
/**
* 返回每个页面的view
*
* @param container
* @param position
* @return
*/
@Override
public Object instantiateItem(ViewGroup container, int position) {
// TODO Auto-generated method stub
ImageView img = new ImageView(MainActivity.this);
// 设置图片
// setImageResource 对应SRC 2进行取模进行循环使用图片
// 下标取余;
img.setImageResource(list.get(position % list.size()));
img.setScaleType(ImageView.ScaleType.FIT_XY);
container.addView(img);
return img;
}
}
}
//activity_main.xml
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
<RadioGroup
android:id="@+id/group"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="100dp"
>
<RadioButton
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
/>
<RadioButton
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<RadioButton
android:id="@+id/btn3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<RadioButton
android:id="@+id/btn4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<RadioButton
android:id="@+id/btn5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</RadioGroup>