Viewpager获取网络图片进行自动无限轮播

来源:互联网 发布:java collections 编辑:程序博客网 时间:2024/06/05 06:23



public class MainActivity extends AppCompatActivity  {

//先获取到这个控件

    ViewPager vp;
    //创建一个集合把要加载的网络图片放进去
    List<String> list;
   //用handler机制来做一个延迟操作 从而实现图片的轮播
    Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (msg.what == 0) {
                int currentItem = vp.getCurrentItem();
                vp.setCurrentItem(currentItem + 1);
                handler.sendEmptyMessageDelayed(0, 3000);
            }
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

//初始化控件

        vp = (ViewPager) findViewById(R.id.vp);

//初始化数据

        initData();

//获取适配器

        MyArder myarder = new MyArder();

//绑定适配器

        vp.setAdapter(myarder);

//延迟发送消息

        handler.sendEmptyMessageDelayed(0, 3000);
        
    }
  
    private void initData() {

        list=new ArrayList<>();

//把图片的网址放到list集合中

        list.add("https://zxpic.gtimg.com/infonew/0/wechat_pics_-18812496.static/640");
        list.add("https://zxpic.gtimg.com/infonew/0/wechat_pics_-45004617.jpg/640");
        list.add("https://zxpic.gtimg.com/infonew/0/wechat_pics_-33170335.jpg/640");
        list.add("https://zxpic.gtimg.com/infonew/0/wechat_pics_-45059318.jpg/640");
        list.add("https://zxpic.gtimg.com/infonew/0/wechat_pics_-45056228.jpg/640");
        list.add("https://zxpic.gtimg.com/infonew/0/wechat_pics_-28219915.jpg/640");
    }
    //viewPager适配器

    class MyArder extends PagerAdapter{

//因为要实现无限轮播所以要设置成 Integer.MAX_VALUE

        @Override
        public int getCount() {
            return Integer.MAX_VALUE;
        }
        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view==object;
        }
        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView((View) object);
        }
        @Override

        public Object instantiateItem(ViewGroup container, int position) {


            ImageView iv=new ImageView(MainActivity.this);

            iv.setScaleType(ImageView.ScaleType.FIT_XY);

//因为我这个使用到了 ImageLoader来加载图片所以底下需要定义一个 ImageLoader类

            ImageLoader.getInstance().displayImage(list.get(position%list.size()),iv);
            container.addView(iv);
            return iv;
        }
    }

}

--------------------------------------------------------------------------------

public class MyApp extends Application{
    @Override
    public void onCreate() {
        super.onCreate();

//这是imageLoader的默认方法
        ImageLoaderConfiguration aDefault = ImageLoaderConfiguration.createDefault(getApplicationContext());
        ImageLoader.getInstance().init(aDefault);
    }
}

原创粉丝点击