无限轮播的简单实现

来源:互联网 发布:淘宝旺旺客服模板代码 编辑:程序博客网 时间:2024/05/17 22:46

  这边先设置下布局

<RelativeLayout    android:layout_width="match_parent"    android:layout_height="250dp">    <android.support.v4.view.ViewPager        android:id="@+id/vp"        android:layout_width="match_parent"        android:layout_height="250dp"        android:layout_alignParentTop="true"        android:layout_alignParentLeft="true"        android:layout_alignParentStart="true"></android.support.v4.view.ViewPager>    <LinearLayout        android:id="@+id/lin"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_marginTop="230dp"        android:gravity="right"        android:orientation="horizontal"        ></LinearLayout></RelativeLayout>

然后设置viewpager下边的小圆点,形状自己开心就好、这是选中状态下的小圆点(我给的形状是圆柱形)

<shape xmlns:android="http://schemas.android.com/apk/res/android"   >    <solid android:color="#fff"></solid>    <size android:height="4dp" android:width="15dp"></size>    <corners android:radius="10dp"></corners></shape>
然后不被选中的小圆点状态

<shape xmlns:android="http://schemas.android.com/apk/res/android"    android:shape="oval"    >    <solid android:color="#666464"></solid>    <size android:height="6dp" android:width="6dp"></size></shape>
好,这边设置完直接上业务逻辑层代码

//找到无限轮播所用控件private void find() {        list_image = new ArrayList<>();    list_yuan = new ArrayList<>();    linear_yuan = (LinearLayout) inflate.findViewById(R.id.lin);    vp = (ViewPager) inflate.findViewById(R.id.vp);}
private void getNetData() {    AsyncHttpClient asyncHttpClient = new AsyncHttpClient();    asyncHttpClient.get(getActivity(), url_image, new TextHttpResponseHandler() {        @Override        public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {        }        @Override        public void onSuccess(int statusCode, Header[] headers, String responseString) {            Gson gson = new Gson();            Syfragment_bean bean = gson.fromJson(responseString, Syfragment_bean.class);            List<Syfragment_bean.DataBean.Ad1Bean> ad1 = bean.getData().getAd1();            for (int i = 0; i < ad1.size(); i++) {                //獲取網絡地址                String url = ad1.get(i).getImage();                //new一張圖片                ImageView imageView = new ImageView(getActivity());                //設置他填充福昌體                imageView.setScaleType(ImageView.ScaleType.FIT_XY);                //用imageloder給他网络地址,进而显示图片                //  ImageLoader.getInstance().displayImage(url, imageView);                ImageLoader.getInstance().displayImage(url, imageView);                //把图片装进集合                list_image.add(imageView);                //new一个小圆点                ImageView button = new ImageView(getActivity());                button.setImageResource(R.drawable.yuan_nomal);                button.setPadding(5, 0, 5, 0);                linear_yuan.addView(button);                //把原点装进集合                list_yuan.add(button);            }            //设置小圆点的第一个是默认选中状态            list_yuan.get(0).setImageResource(R.drawable.yuan_select);            initDatas();        }    });    //联动viewpager轮播设置小圆点联动的监听    vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {        @Override        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {        }        @Override        public void onPageSelected(int position) {            for (int i = 0; i < list_yuan.size(); i++) {                if (position % list_yuan.size() == i) {                    list_yuan.get(i).setImageResource(R.drawable.yuan_select);                } else {                    list_yuan.get(i).setImageResource(R.drawable.yuan_nomal);                }            }        }        @Override        public void onPageScrollStateChanged(int state) {        }    });}public void onResume() {    super.onResume();    handler.postDelayed(new Runnable() {        @Override        public void run() {            current = vp.getCurrentItem();            vp.setCurrentItem(current + 1);            handler.postDelayed(this, 3000);        }    }, 50);}//创建无限轮播适配器private void initDatas() {    if (myAdapter == null) {        myAdapter = new MyAdapter();        vp.setAdapter(myAdapter);    } else {        myAdapter.notifyDataSetChanged();    }}//无限轮播设置适配器class MyAdapter extends PagerAdapter {    @Override    public Object instantiateItem(ViewGroup container, int position) {        View view = list_image.get(position % (list_image.size()));        container.addView(view);        return view;    }    @Override    public void destroyItem(ViewGroup container, int position, Object object) {        View view = list_image.get(position % (list_image.size()));        container.removeView(view);    }    @Override    public int getCount() {        return Integer.MAX_VALUE;    }    @Override    public boolean isViewFromObject(View view, Object object) {        return view == object;    }}


原创粉丝点击