zoukankan      html  css  js  c++  java
  • 开发---【本地和网络获得轮播图资源】

    MainActivity:

    public class MainActivity extends Activity {
        Handler hd = new Handler() {
            public void handleMessage(android.os.Message msg) {
                if (msg.what == 1) {
                    int currentItem = vp.getCurrentItem();
                    currentItem++;
                    vp.setCurrentItem(currentItem);
                    setMove();
                }
            };
        };
        private ViewPager vp;
        private LinearLayout ll;
        private ArrayList<ImageView> dl;
        private List<Integer> list;
        private int arg2;
        private String path;
        private List<Details> ld;
        private MyAsynTask mt;
        private ListView gv;
        private Weixin weixin;
        private ArrayList<Details> ds;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            vp = (ViewPager) findViewById(R.id.vp);
            ll = (LinearLayout) findViewById(R.id.ll);
            gv = (ListView) findViewById(R.id.gv);
            MyAsynTask mt = new MyAsynTask();
            mt.execute();
            list = new ArrayList<Integer>();
            list.add(R.drawable.beaut);
            list.add(R.drawable.bottles);
            list.add(R.drawable.pills);
            list.add(R.drawable.pink);
            //设置本地图片资源
            //vp.setAdapter(new MyVpAdapter(MainActivity.this, list, hd));
            //设置当前条目为
            //vp.setCurrentItem(list.size() * 10000);
            
            vp.setOnPageChangeListener(new OnPageChangeListener() {

                @Override
                public void onPageSelected(int arg0) {
                    // TODO Auto-generated method stub
                    for (int i = 0; i < dl.size(); i++) {
                        //position1
                        if (arg0 % dl.size() == i) {
                            dl.get(i).setImageResource(R.drawable.dots_checked);
                        } else {
                            dl.get(i).setImageResource(R.drawable.dots_normal);
                        }
                    }
                }

                @Override
                public void onPageScrolled(int arg0, float arg1, int arg2) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onPageScrollStateChanged(int arg0) {
                    // TODO Auto-generated method stub

                }
            });
            // 实例化小点儿
            initDots();
            // 调用handler
            setMove();
        }

        private void setMove() {
            // TODO Auto-generated method stub
            hd.sendEmptyMessageDelayed(1, 1500);
        }

        private void initDots() {
            //创建小点儿的集合
            dl = new ArrayList<ImageView>();
            //移除内容
            ll.removeAllViews();
            //清空集合
            dl.clear();
            for (int i = 0; i < list.size(); i++) {
                ImageView imageView = new ImageView(this);
                // 加点儿
                if (i == 0) {
                    // 默认为亮点儿
                    imageView.setImageDrawable(getResources().getDrawable(
                            R.drawable.dots_checked));
                } else {
                    imageView.setImageDrawable(getResources().getDrawable(
                            R.drawable.dots_normal));
                }

                LayoutParams params = new LayoutParams(20, 20);
                ll.addView(imageView, params);
                dl.add(imageView);
            }
        }

        class MyAsynTask extends AsyncTask<Void, Void, String> {
            private MyAdapter ma;
            private ProgressDialog pd;
            
            

            /*
             * // 线程之前进行初始化操作
             *
             * @Override protected void onPreExecute() { // TODO Auto-generated
             * method stub super.onPreExecute(); pd = new
             * ProgressDialog(MainActivity.this); pd.setTitle("正在加载中"); pd.show(); }
             */
            // 后台执行耗时操作
            @Override
            protected String doInBackground(Void... params) {
                // TODO Auto-generated method stub
                try {
                    int position = 0;
                    HttpClient httpClient = new DefaultHttpClient();
                    path = "http://v.juhe.cn/weixin/query?key=0917c812f187b92e025c9b7c2d4e59b5"
                            + "&pno="
                            + URLEncoder.encode((position + 1) + "", "utf-8");
                    HttpGet httpGet = new HttpGet(path);
                    HttpResponse httpResponse = httpClient.execute(httpGet);
                    int statusCode = httpResponse.getStatusLine().getStatusCode();
                    if (statusCode == 200) {
                        HttpEntity entity = httpResponse.getEntity();
                        InputStream inputStream = entity.getContent();
                        String str = streamToStr(inputStream);
                        return str;
                    }
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                return null;
            }

            // 展示后台获取的结果
            @Override
            protected void onPostExecute(String result) {
                super.onPostExecute(result);
                // TODO Auto-generated method stub
                // 解析
                Gson gson = new Gson();
                weixin = gson.fromJson(result, Weixin.class);
                ma = new MyAdapter(weixin);
                gv.setAdapter(ma);
                ds = weixin.result.list;
                vp.setCurrentItem(ds.size()*10000);
                vp.setAdapter(new VpAdapter(MainActivity.this, ds, hd));
            }

        }

        /**
         * 流转串
         *
         * @param inputStream
         * @return
         */
        public static String streamToStr(InputStream inputStream) {
            try {
                byte[] buffer = new byte[1024];
                int len = 0;
                ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
                while ((len = inputStream.read(buffer)) != -1) {
                    arrayOutputStream.write(buffer, 0, len);
                }
                return arrayOutputStream.toString();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }

        // 定义适配器
        class MyAdapter extends BaseAdapter {
            Weixin weixin;
            private ArrayList<Details> list;

            public MyAdapter(Weixin weixin) {
                // TODO Auto-generated constructor stub
                this.weixin = weixin;
                list = weixin.result.list;
            }

            @Override
            public int getCount() {
                // TODO Auto-generated method stub
                return list.size();
            }

            @Override
            public Object getItem(int position) {
                // TODO Auto-generated method stub
                return list.get(position);
            }

            @Override
            public long getItemId(int position) {
                // TODO Auto-generated method stub
                return position;
            }

            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                // TODO Auto-generated method stub
                ViewHolder vh = null;
                if (convertView == null) {
                    convertView = View.inflate(MainActivity.this, R.layout.lv_item,
                            null);
                    vh = new ViewHolder();
                    convertView.setTag(vh);
                    vh.iv = (ImageView) convertView.findViewById(R.id.lv_imageView);
                    vh.tv = (TextView) convertView.findViewById(R.id.lv_textView);
                } else {
                    vh = (ViewHolder) convertView.getTag();
                }
                vh.tv.setText(list.get(position).title);
                String url = list.get(position).firstImg;
                BitmapUtils bu = new BitmapUtils(MainActivity.this);
                bu.display(vh.iv, url);
                return convertView;
            }

            class ViewHolder {
                ImageView iv;
                TextView tv;
            }

        }

    }
    设置本地图片资源的适配器:
    //设置本地图片的轮播
    public class MyVpAdapter extends PagerAdapter {
        MainActivity mainActivity;
        List<Integer> list;
        Handler hd;

        public MyVpAdapter(MainActivity mainActivity, List<Integer> list, Handler hd) {
            // TODO Auto-generated constructor stub
            this.mainActivity = mainActivity;
            this.list = list;
            this.hd = hd;
        }

        @Override
        public int getCount() {
            // 得到最大值
            return Integer.MAX_VALUE;
        }

        @Override
        public boolean isViewFromObject(View arg0, Object arg1) {
            // TODO Auto-generated method stub
            return arg0 == arg1;
        }

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            // 直接实例化imageview对象
            ImageView iv = new ImageView(mainActivity);
            // 设置图片资源需要用position取集合长度的余数
            iv.setImageResource(list.get(position % list.size()));
            // 设置轮播过程中图片的监听事件
            iv.setOnTouchListener(new OnTouchListener() {

                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    // 判断事件
                    switch (event.getAction()) {
                    // 取消时,发送handler空消息继续轮播
                    case MotionEvent.ACTION_CANCEL:
                        hd.sendEmptyMessageDelayed(1, 1500);
                        break;
                    // 摁下时,移除所有的回调和信息
                    case MotionEvent.ACTION_DOWN:
                        hd.removeCallbacksAndMessages(null);
                        break;
                    // 抬起时,发送handler空消息继续轮播
                    case MotionEvent.ACTION_UP:
                        hd.sendEmptyMessageDelayed(1, 1500);
                        break;

                    default:
                        break;
                    }
                    // 返回被消费
                    return true;
                }
            });
            // 添加视图
            container.addView(iv);
            return iv;
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView((View) object);
        }

    //网络请求设置轮播资源
    public class VpAdapter extends PagerAdapter {
        MainActivity mainActivity;
        ArrayList<Details> ds;
        Handler hd;

        public VpAdapter(MainActivity mainActivity, ArrayList<Details> ds,
                Handler hd) {
            // TODO Auto-generated constructor stub
            this.mainActivity = mainActivity;
            this.ds = ds;
            this.hd = hd;
        }

        @Override
        public int getCount() {
            return Integer.MAX_VALUE;
        }

        @Override
        public boolean isViewFromObject(View arg0, Object arg1) {
            // TODO Auto-generated method stub
            return arg0 == arg1;
        }

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            // TODO Auto-generated method stub
            ImageView iv = new ImageView(mainActivity);
            // 利用工具类获取图片资源
            BitmapUtils bi = new BitmapUtils(mainActivity);
            bi.display(iv, ds.get(position % ds.size()).firstImg);
            iv.setOnTouchListener(new OnTouchListener() {

                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    // TODO Auto-generated method stub
                    switch (event.getAction()) {
                    case MotionEvent.ACTION_CANCEL:
                        hd.sendEmptyMessageDelayed(1, 1500);
                        break;
                    case MotionEvent.ACTION_DOWN:
                        hd.removeCallbacksAndMessages(null);
                        break;
                    case MotionEvent.ACTION_UP:
                        hd.sendEmptyMessageDelayed(1, 1500);
                        break;

                    default:
                        break;
                    }
                    return true;
                }
            });
            container.addView(iv);
            return iv;
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            // TODO Auto-generated method stub
            // super.destroyItem(container, position, object);
            container.removeView((View) object);
        }

    }


  • 相关阅读:
    使用QT在子线程中访问串口
    小程序批量上传图片方案
    Jenkins自动化远程部署(vue-github)
    nginx配置https证书
    Linux 安装php7
    Vue技术点整理-指令
    如何保证接口的幂等性?
    mybatis 一对多分页查询数据条数不匹配解决
    源码系列-JDK-String
    kafka window 操作
  • 原文地址:https://www.cnblogs.com/welldones/p/5354479.html
Copyright © 2011-2022 走看看