无限轮播

来源:互联网 发布:小丽和小云在计算 编辑:程序博客网 时间:2024/06/03 11:23

1.activity

AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() {        @Override        protected String doInBackground(Void... params) {            String path ="http://v.juhe.cn/toutiao/index?type=yule&key=61005cfc63a8075c88d5d408ba90aff9";            try {                URL url = new URL(path);                HttpURLConnection connection = (HttpURLConnection) url.openConnection();                connection.setRequestMethod("GET");                connection.setReadTimeout(5000);                connection.setConnectTimeout(5000);                int responseCode = connection.getResponseCode();                if (responseCode==200){                    InputStream inputStream = connection.getInputStream();                    String json = getstring(inputStream,"utf-8");                    return json;                }            } catch (Exception e) {                e.printStackTrace();            }            return null;        }        @Override        protected void onPostExecute(String s) {           // Log.d("TAG","+++++++++++++++++++"+s);                if (s!=null){                    Gson gson = new Gson();                    Bean bean = gson.fromJson(s, Bean.class);                    List<Bean.ResultBean.DataBean> data = bean.getResult().getData();                    vp.setAdapter(new Myadapter(MainActivity.this,data,handler));                    handler.sendEmptyMessageDelayed(0,3000);                    indic(data);                    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<imgs.size();i++){                                if (i==position%imgs.size()){                                    imgs.get(i).setImageResource(R.drawable.sha1);                                }else{                                    imgs.get(i).setImageResource(R.drawable.sha2);                                }                            }                        }                        @Override                        public void onPageScrollStateChanged(int state) {                        }                    });                }        }    };    asyncTask.execute();}private void indic(List<Bean.ResultBean.DataBean> data) {    imgs = new ArrayList<>();    for (int i=0;i<data.size();i++){        ImageView imageView = new ImageView(MainActivity.this);        if (i==0){            imageView.setImageResource(R.drawable.sha1);        }else{            imageView.setImageResource(R.drawable.sha2);        }        imgs.add(imageView);        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);        params.setMargins(5,0,5,0);        lin.addView(imageView,params);    }}private String getstring(InputStream inputStream, String charset) {    try {        InputStreamReader inputStreamReader = new InputStreamReader(inputStream,charset);        BufferedReader br = new BufferedReader(inputStreamReader);        String s = null;        StringBuilder builder = new StringBuilder();        while((s=br.readLine())!=null){            builder.append(s);        }        return builder.toString();    } catch (Exception e) {        e.printStackTrace();    }    return null;}
2.适配器

public class Myadapter extends PagerAdapter {    Context tcx;    List<Bean.ResultBean.DataBean> data;    Handler handler;    public Myadapter(Context tcx, List<Bean.ResultBean.DataBean> data,Handler handler) {        this.tcx = tcx;        this.data = data;        this.handler=handler;    }    @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 imageView = new ImageView(tcx);        imageView.setScaleType(ImageView.ScaleType.FIT_XY);        ImageLoader.getInstance().displayImage(data.get(position%data.size()).getThumbnail_pic_s(),imageView,ImageloaderUtils.getoption());        imageView.setOnTouchListener(new View.OnTouchListener() {            @Override            public boolean onTouch(View v, MotionEvent event) {                int action = event.getAction();                switch (action){                    case MotionEvent.ACTION_DOWN:                        handler.removeCallbacksAndMessages(null);                        break;                    case MotionEvent.ACTION_MOVE:                        handler.removeCallbacksAndMessages(null);                        break;                    case MotionEvent.ACTION_CANCEL:                        handler.removeCallbacksAndMessages(null);                        break;                    case MotionEvent.ACTION_UP:                        handler.sendEmptyMessageDelayed(0,3000);                        break;                }                return true;            }        });        container.addView(imageView);        return imageView;    }    @Override    public void destroyItem(ViewGroup container, int position, Object object) {        container.removeView((View) object);    }}

原创粉丝点击