本地和网络获得轮播图资源:

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);
    }

}

时间: 2024-11-24 13:43:02

本地和网络获得轮播图资源:的相关文章

android ViewPager实现的轮播图广告自定义视图,网络获取图片和数据

public class SlideShowAdView extends FrameLayout { //轮播图图片数量    private static int IMAGE_COUNT = 3;    //自动轮播的时间间隔    private final static int TIME_INTERVAL = 5;    //自动轮播启用开关    private final static boolean isAutoPlay = false;       //自定义轮播图的资源ID   

(新手向)基于Bootstrap的简单轮播图的手机实现

个人电脑里存了不少适合手机欣赏的图片,但是放手机里看是件很占据资源的事.鉴于家里有一台电脑经常开着,正好用来做家庭局域网共享,于是笔者就设想通过一种比较简单环保的思路.通过手机访问电脑内的图片. 首先是本地站点搭建:win+R输入mmc打开控制台,文件-添加/删除管理单元,Internet信息服务.添加确定,右侧基本信息,新建网站-把路径改了.设定一个端口号,手机浏览器就可以输入  电脑局域网ip:端口号 就可以连上去了. 接下来问题来了,一个个点击查看然后关闭图片是一件更不环保的事.何不做一个

iOS开发之 用第三方类库实现轮播图

在github上面有很多的第三方类库,大大节约了大家的开发时间 下载地址:https://github.com/gsdios/SDCycleScrollView 现已支持cocoapods导入:pod 'SDCycleScrollView','~> 1.61' 效果 具体实现代码 #import "ViewController.h" #import "SDCycleScrollView.h" @interface ViewController () <S

iOS用第三方类库实现轮播图

在github上面有很多的第三方类库,大大节约了大家的开发时间 下载地址:https://github.com/gsdios/SDCycleScrollView 现已支持cocoapods导入:pod 'SDCycleScrollView','~> 1.61' 效果 具体实现代码 #import "ViewController.h" #import "SDCycleScrollView.h" @interface ViewController () <S

上下拉刷新 轮播图 listview

activity_main <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://sch

蓝懿IOS学习UICollectionView实战轮播图

今天刘国斌老师讲了关于JSON数据源的获取与利用,通过微博的实战项目进行练习,获取的数据都是网络上请求的真实数据,这种方式学起来很轻松,很容易理解. 刘国斌老师把今天做的练习题UICollectionView轮播图实现功能的方法步骤都下了下来,我们学起来很方便.   实现轮播图 效果的步骤: 1.创建layout (UICollectionViewFlowLayout) 2.设置layout的方向 默认上下 3.创建UICollectionView 4.设置delegate dataSource

无限轮播图

思路:在ScrollView的contentSiz设置成ScrollView宽的度的三倍.创建三个循环的View.当滑动的时候,正常滑动活动结束.滑动结束设置contentOffset将视图滑动到中间去.将后面的数据赋值到中间...简单说就是视图只显示中间一张视,交换数据实现不同数据的显示.. #import <UIKit/UIKit.h> @protocol YQImageLoopDelegate <NSObject> - (void)YQImageLoopConfigDataA

android中广告轮播图总结

功能点:无限轮播.指示点跟随.点击响应.实现思路: 1.指示点跟随,指示点通过代码动态添加,数量由图片数量决定. 在viewpager的页面改变监听中,设置点的状态选择器enable,当前页时,setEnable(true),非当前页设置为false.由于图片是从网络获取,数量不定,所以此处不能使用switch写死,需要设置变量记录当前和前一个.代码如下: llAddPoint为添加指示点的线性布局 prePosition为前一个位置,初始化时设为0,newPosition为当前位置 int n

React Native布局实践:开发京东客户端首页(三)——轮播图的实现

上篇文章中,我们一起构建了京东客户端的TabBar,在本文中,将继续向大家介绍京东客户端首页轮播图及其下发功能按钮的开发方法,现在就让我们开始吧! 1.相关控件调研 目前在Github开源的轮播图控件,个人认为做得比较好的,一个是react-native-swiper(https://github.com/leecade/react-native-swiper),一个是react-native-viewpager(https://github.com/race604/react-native-v