viewpager 无限轮播

来源:互联网 发布:vb提取网页数据 编辑:程序博客网 时间:2024/05/14 15:48


<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:drawable="@drawable/point_red" android:state_enabled="true"></item>    <item android:drawable="@drawable/point_green" android:state_enabled="false"></item></selector>
<shape xmlns:android="http://schemas.android.com/apk/res/android"    android:shape="oval">    <solid android:color="@android:color/holo_green_light"></solid></shape>
<shape xmlns:android="http://schemas.android.com/apk/res/android"    android:shape="oval">    <solid android:color="@android:color/holo_red_light"></solid></shape>

布局:

<android.support.v4.view.ViewPager    android:id="@+id/vp"    android:layout_width="match_parent"    android:layout_height="480dp"/><LinearLayout    android:id="@+id/ll_point"    android:layout_width="match_parent"    android:layout_height="20dp"    android:orientation="horizontal"    android:layout_alignBottom="@id/vp"    android:layout_marginBottom="20dp"    android:gravity="center"></LinearLayout>

代码:

public class MainActivity extends AppCompatActivity {    private ViewPager vp;    private LinearLayout ll_point;    private List<ImageView> images = new ArrayList<>();    private int [] x = new int[]{R.mipmap.a,R.mipmap.b,R.mipmap.c};    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //找控件        initView();        initViewPager();    }    private void initView() {        vp = (ViewPager) findViewById(R.id.vp);        ll_point = (LinearLayout) findViewById(R.id.ll_point);    }    private void initViewPager() {        for (int i = 0; i < x.length; i++) {            ImageView imageView = new ImageView(MainActivity.this);            imageView.setImageResource(x[i]);            images.add(imageView);        }        MyAdapter adapter = new MyAdapter();        vp.setAdapter(adapter);        initPoint();        vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {            @Override            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {            }            @Override            public void onPageSelected(int position) {                //获取小圆点数据                int count = ll_point.getChildCount();                for (int i = 0; i < count; i++) {                    View view = ll_point.getChildAt(i);                    //页面改变时选中小圆点                    view.setEnabled(i == position ? false : true);                }            }            @Override            public void onPageScrollStateChanged(int state) {            }        });    }    private void initPoint() {        for (int i = 0; i < images.size(); i++) {            //   Toast.makeText(MainActivity.this, "图片个数:"+images.size(), Toast.LENGTH_SHORT).show();            //创建小圆点控件            View view = new View(this);            //设置背景选择器            view.setBackgroundResource(R.drawable.point_bg);            //创建小圆点大小            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(20, 20);            //创建小圆点间距            params.rightMargin = 10;            //把小圆点添加容器            ll_point.addView(view, params);            view.setTag(i);        }        //设置第一个为默认选择        View view = ll_point.getChildAt(0);        view.setEnabled(false);    }    //定义handler    private Handler handler = new Handler();    //开启    public void startSwitch() {        handler.postDelayed(new Runnable() {            @Override            public void run() {                int item = vp.getCurrentItem();                if (item == vp.getAdapter().getCount() - 1) {                    item = 0;                } else {                    item++;                }                vp.setCurrentItem(item);                handler.postDelayed(this, 2000);            }        }, 2000);    }    //停止    public void stopSwitch() {        handler.removeCallbacksAndMessages(null);    }    //创建适配器    private class MyAdapter extends PagerAdapter {        @Override        public int getCount() {            return images.size();        }        @Override        public boolean isViewFromObject(View view, Object object) {            return view == object;        }        @Override        public Object instantiateItem(ViewGroup container, int position) {            ImageView imageView = images.get(position);            container.addView(imageView);            return imageView;        }        @Override        public void destroyItem(ViewGroup container, int position, Object object) {            container.removeView(images.get(position));        }    }    @Override    protected void onResume() {        super.onResume();        startSwitch();    }    @Override    protected void onPause() {        super.onPause();        stopSwitch();    }}


另一种

@Overridepublic void onPageSelected(int position) {    for (int i = 0;i<images.size();i++){        View view = ll.getChildAt(i);        view.setEnabled(i == position%images.size()?false:true);    }}
private class MyAdapter extends PagerAdapter {    @Override    public int getCount() {        return Integer.MAX_VALUE;    }
@Overridepublic Object instantiateItem(ViewGroup container, int position) {    ImageView imageView = images.get(position%images.size());    container.addView(imageView);    return imageView;}
public void startSwitch(){    handler.postDelayed(new Runnable() {        @Override        public void run() {            int currentItem = vp.getCurrentItem();            currentItem++;            vp.setCurrentItem(currentItem);            handler.postDelayed(this,2000);        }    },2000);}

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 注销大王卡话费怎么办 手机卡里还有话费怎么办 多余的话费要怎么办 联通流量欠费500怎么办 手机卡没了怎么办呢 联通显示无服务怎么办 大王卡停用了怎么办 手机卡中 剩余话费怎么办 小米被流量限制怎么办 支付宝禁止联网怎么办 手机号登录不上怎么办 电信手机号无法打电话怎么办 新手机号无法注册怎么办 电信手机怎么办流量包 qq华夏到监牢怎么办 炫舞被骗2900怎么办 qq好友申诉后怎么办 无好友辅助申请怎么办 辅助申诉成功后怎么办 qq绑不了手机号怎么办 新办号码有微信怎么办 两手机互换号后微信怎么办 手机申请不了qq怎么办 快手账号保护了怎么办 qq号过期登不上怎么办 xp 登陆界面不见了怎么办 手机号qq 别人登录怎么办 qq号申请频繁怎么办 qq号实名验证怎么办 陌陌没法注册怎么办 腾讯q币充值错误怎么办 手机号码注册微信号怎么办 q币充错了号怎么办 微信超额度提现都不可以怎么办 微信发红包转账限额怎么办 银行卡没设密码怎么办 宜人贷逾期一天怎么办 快手实名已认证怎么办 爱奇艺充会员没有银行卡怎么办 手机qq内存太大怎么办 借呗逾期半年怎么办