无限轮播

来源:互联网 发布:流体计算软件 编辑:程序博客网 时间:2024/06/03 21:03
private ViewPager vp;private LinearLayout ll;private GridView gv;List<DataBean> datalist=new ArrayList<>();List<ImageView> dotlist=new ArrayList<>();//创建HandlerHandler handler=new Handler(){    @Override    public void handleMessage(Message msg) {        switch(msg.what){            case 0:                String json = (String) msg.obj;                parseData(json);                break;            case 1:                int currentItem = vp.getCurrentItem();                currentItem++;                vp.setCurrentItem(currentItem);                sendMessge();                break;        }    }};@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    //初始化控件    initView();    //线程获取json串    getjson();    gv.setAdapter(new Base());}//初始化控件的方法private void initView() {    //获取事件源    vp = (ViewPager) findViewById(R.id.vp);    ll = (LinearLayout) findViewById(R.id.ll);    gv = (GridView) findViewById(R.id.gv);}//线程获取json串,发送hanlderpublic void getjson() {    new Thread(){        @Override        public void run() {            String json = new NewConnectionUrl().getJson("http://v3.wufazhuce.com:8000/api" +                    "/reading/index/?version=3.5.0&platform=android");            Message m = new Message();            m.what=0;            m.obj=json;            handler.sendMessage(m);        }    }.start();}//解析jsonprivate void parseData(String json) {    Gson gson = new Gson();    JsonBean jsonBean = gson.fromJson(json, JsonBean.class);    List<JsonBean.DataBean.EssayBean> essay = jsonBean.getData().getEssay();    for (JsonBean.DataBean.EssayBean w: essay) {        List<JsonBean.DataBean.EssayBean.AuthorBean> author = w.getAuthor();        for (JsonBean.DataBean.EssayBean.AuthorBean r: author) {            String web_url = r.getWeb_url();            String desc = r.getDesc();            DataBean dataBean = new DataBean(desc, web_url);            datalist.add(dataBean);            //        }    }    //设置适配器    VpAdapter vpAdapter = new VpAdapter();    vp.setAdapter(vpAdapter);    //设置小点    initdot();    //    vp.setCurrentItem(1000000);    //    sendMessge();    //vp监听    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 <dotlist.size() ; i++) {                if(i==position%dotlist.size()){                    dotlist.get(i).setImageResource(R.drawable.choose);                }else{                    dotlist.get(i).setImageResource(R.drawable.notchoose);                }            }        }        @Override        public void onPageScrollStateChanged(int state) {        }    });}//设置小点private void initdot() {    if(dotlist!=null){        dotlist.clear();    }    for (int i = 0; i <datalist.size() ; i++) {        ImageView imageView = new ImageView(MainActivity.this);        //imageView.setScaleType(ImageView.ScaleType.FIT_XY);        if(i==0){            imageView.setImageResource(R.drawable.choose);        }else{            imageView.setImageResource(R.drawable.notchoose);        }        LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(20, 20);        layoutParams.setMargins(20,0,20,0);        ll.addView(imageView,layoutParams);        dotlist.add(imageView);        //Log.e("Tag-----------------","设置小点设置小点设置小点设置小点设置小点设置小点设置小点设置小点");    }}//vp.适配器class VpAdapter extends PagerAdapter{    @Override    public int getCount() {        return Integer.MAX_VALUE;    }    @Override    public boolean isViewFromObject(View view, Object object) {        return view==object;    }    @Override    public Object instantiateItem(ViewGroup container, int position) {        ImageView iv = new ImageView(MainActivity.this);        //对图片进行缩放        iv.setScaleType(ImageView.ScaleType.FIT_XY);        DisplayImageOptions options = new DisplayImageOptions.Builder()                .showImageOnLoading(R.mipmap.ic_launcher) // 设置图片下载期间显示的图片                .showImageForEmptyUri(R.mipmap.ic_launcher) // 设置图片Uri为空或是错误的时候显示的图片                .showImageOnFail(R.mipmap.ic_launcher) // 设置图片加载或解码过程中发生错误显示的图片                .build();        Log.e("xxx", "instantiateItem: "+datalist.get(position%datalist.size()).getWeb_url());        ImageLoader.getInstance().displayImage(datalist.get(position%datalist.size()).getWeb_url(),iv,options);        container.addView(iv);        return iv;    }    @Override    public void destroyItem(ViewGroup container, int position, Object object) {        container.removeView((View) object);    }}//延迟发送private void sendMessge() {    handler.sendEmptyMessageDelayed(1,2000);}
原创粉丝点击