public class MainActivity extends Activity {
private ViewPager pager;
private RadioGroup radioGroup;
private MyHandler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化控件
pager = (ViewPager) findViewById(R.id.pager);
radioGroup = (RadioGroup) findViewById(R.id.radioGroup1);
// 添加图片
int arr[] = { R.drawable.a1, R.drawable.a2, R.drawable.a3,
R.drawable.a4 };
final ArrayList<ImageView> list = new ArrayList<ImageView>();
for (int i = 0; i < arr.length; i++) {
// 创建图片对象
ImageView imageView = new ImageView(MainActivity.this);
// 设置图片
imageView.setImageResource(arr);
// 存到集合
list.add(imageView);
// 创建小圆点
RadioButton button = new RadioButton(MainActivity.this);
radioGroup.addView(button);
}
// 适配器
pager.setAdapter(new MyPagerAdapter(list));
// 默认选中第一个
radioGroup.check(radioGroup.getChildAt(0).getId());
// 滑动页面让小圆点跟着动
pager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
// 通过取模 防止下标越界
arg0 = arg0 % list.size();
// 页面切换
radioGroup.check(radioGroup.getChildAt(arg0).getId());
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// 页面滑动
}
@Override
public void onPageScrollStateChanged(int arg0) {
// 页面滑动状态改变
}
});
handler = new MyHandler();
handler.sendEmptyMessageDelayed(0, 2000);
}
class MyHandler extends Handler{
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 0:
//没两秒钟就要改变一下视图
//首先我得知道 当前展示的是哪一页,然后当前页+1=下一个页面
//获取当前页
int currentItem = pager.getCurrentItem()+1;
//切换到下一页
pager.setCurrentItem(currentItem);
// 无限发送消息
handler.sendEmptyMessageDelayed(0, 2000);
break;
}
}
}
}
//适配器
//继承 PagerAdapter
public class MyPagerAdapter extends PagerAdapter {
// 数据
private ArrayList<ImageView> list;
// 有参构造
public MyPagerAdapter(ArrayList<ImageView> list) {
this.list = list;
}
@Override
public int getCount() {// 滑动界面有几个就返回几
// // 返回图片个数
// return list.size();
//页面有无数个
return Integer.MAX_VALUE;
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// 11判断是否是
return arg0 == arg1;
}
// 实现方法
// 创建item
@Override
public Object instantiateItem(ViewGroup container, int position) {
//通过取模,让索引永远小于list.size()
position=position%list.size();
// 获取image
ImageView imageView = list.get(position);
// 把imageView加入到ViewGroup(也就是加入到viewpager中)
// 注意这一步不写不会报错,也可以滑动,但是就是没图片!!
container.addView(imageView);
// 返回imageView
return imageView;
}
@Override//销毁条目
public void destroyItem(ViewGroup container, int position, Object object) {
//销毁条目
container.removeView((View) object);
}
}
//布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
/>
<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
</RadioGroup>
</LinearLayout>
---------------------
【转载,仅作分享,侵删】
原文:https://blog.csdn.net/weixin_43936560/article/details/86176918
|
|