A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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


2 个回复

倒序浏览
奈斯,感谢分享
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马