无限轮播

来源:互联网 发布:淘宝店刷销量多少钱 编辑:程序博客网 时间:2024/05/16 09:01
package com.bwei.viewpager;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.LinearLayout.LayoutParams;import android.widget.TextView;import com.bwei.viewpager.adapter.MyPagerAdapter;import com.bwei.viewpager.bean.ViewBean;import com.bwei.viewpager.bean.ViewBean.Adlist;import com.bwei.viewpager.utils.NetWorkUtils;import com.google.gson.Gson;public class MainActivity extends Activity {    private List<Adlist> listData;    private ViewPager vp;    private TextView tv_des;    private LinearLayout ll_dot;    //存放的是viewPager下面的点    List<ImageView> ivList= new ArrayList<>();     private Handler handler = new Handler(){        public void handleMessage(android.os.Message msg) {            int num = msg.what;            switch (num) {            case 0:                vp.setAdapter(new MyPagerAdapter(MainActivity.this,listData,handler));                initDot();                //设置初使化的索引                vp.setCurrentItem(1000000);                //让其无限轮播                sendDelayedMessage();                ViewPagerPagerListener();                break;            case 1:                //拿到viewpager当前的索引值                int position = vp.getCurrentItem();                position++;                vp.setCurrentItem(position);                sendDelayedMessage();                break;            default:                break;            }        };    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        vp = (ViewPager) findViewById(R.id.vp);        tv_des = (TextView) findViewById(R.id.tv_des);        ll_dot = (LinearLayout) findViewById(R.id.ll_dot);        //从服务器上返回的json字符串        new Thread(){            public void run() {                String json = NetWorkUtils.getStr();                gsonData(json);                handler.sendEmptyMessage(0);            };        }.start();    }    /**     *      */    protected void sendDelayedMessage() {        //延时两秒去发送一个消息给handler        handler.sendEmptyMessageDelayed(1, 2000);    }    /**     * viewpager滑动监听事件     */    protected void ViewPagerPagerListener() {        vp.setOnPageChangeListener(new OnPageChangeListener() {            @Override            public void onPageSelected(int position) {                for (int i = 0; i < ivList.size(); i++) {                    if(position%listData.size()==i){                        //viewpager的position和下面的占的位置相等,我们就让点变颜色                        ivList.get(position%listData.size()).setImageResource(R.drawable.dot_focuse);                    }else{                        ivList.get(i).setImageResource(R.drawable.dot_normal);                    }                    tv_des.setText(listData.get(position%listData.size()).title);                }            }            @Override            public void onPageScrolled(int arg0, float arg1, int arg2) {            }            @Override            public void onPageScrollStateChanged(int arg0) {            }        });    }    /**     * 初使化点     */    protected void initDot() {        if(ivList!=null){            ivList.clear();        }        for (int i = 0; i < listData.size(); i++) {            ImageView iv = new ImageView(this);            if(i==0){                //如果                iv.setImageResource(R.drawable.dot_focuse);            }else{                iv.setImageResource(R.drawable.dot_normal);            }            tv_des.setText(listData.get(i).title);            LayoutParams params = new LayoutParams(20, 20);            //控制两点之间的距离的            params.setMargins(10, 0, 10, 0);            ivList.add(iv);            ll_dot.addView(iv, params);        }    }    /**     * 解析json数据     */    private void gsonData(String json) {        Gson gson = new Gson();        ViewBean viewBean = gson.fromJson(json, ViewBean.class);        //存放数据的集合        listData = viewBean.data.adlist;    }}
0 0
原创粉丝点击