Android实现轮播效果的两种方法

Android实现轮播效果的两种方法,第1张

概述实现轮播效果有2种方法:(1)使用ViewPager+ImageView,通过Handler进行间隔发送消息,实现自动轮播效果

实现轮播效果有2种方法:

(1)使用VIEwPager+ImageVIEw,通过Handler进行间隔发送消息,实现自动轮播效果

xml代码:

<androID.support.v4.vIEw.VIEwPager    androID:ID="@+ID/fragment_vIEwPager"    androID:layout_wIDth="match_parent"    androID:layout_height="200dp" />
 private Handler handler=new Handler(){    @OverrIDe    public voID handleMessage(Message msg) {      super.handleMessage(msg);      List= (List<BannerBean>) msg.obj;      //进行下载图片      for (int i = 0; i < 3; i++) {        Picasso.with(getActivity()).load(List.get(i).getimgs()).resize(640,400).into(imgs.get(i));      }      //展示图片      MyAdapter adapter=new MyAdapter();      vIEwPager.setAdapter(adapter);    }  };  private Handler handler2=new Handler(){    @OverrIDe    public voID handleMessage(Message msg) {      super.handleMessage(msg);      //获取当前vIEwPager的位置      int pos=vIEwPager.getCurrentItem();      //如果是最后一张图片就进行设置为第一张,实现循环      if(pos==imgs.size()-1){        pos=0;       //否则进行下一张图片展示      }else{        pos++;      }      //设置vIEwPager的位置      vIEwPager.setCurrentItem(pos);      //定时发送消息      handler2.sendEmptyMessageDelayed(1,2000);    }  };   @OverrIDe  public VIEw onCreateVIEw(LayoutInflater inflater,VIEwGroup container,Bundle savedInstanceState) {    VIEw vIEw=inflater.inflate(R.layout.fragment_recreation,container,false);    initvIEw(vIEw);    load();    //发送消息给handler2,实现自动轮播    handler2.sendEmptyMessageDelayed(1,2000);    initListener();    return vIEw;  }   private voID load() {    //下载图片地址    new Thread(){      @OverrIDe      public voID run() {        super.run();        String Json= Utils.getJsonFromNet(ContentUrls.headline_head+0);        if(!TextUtils.isEmpty(Json)){          List<BannerBean>data= ParserBanner.getData(Json);          Message msg=new Message();          msg.obj=data;          handler.sendMessage(msg);        }      }    }.start();    data=new ArrayList<>();    headlineAdapter=new headlineAdapter(data,getActivity());    lv.setAdapter(headlineAdapter);    new MyAsyncTask(data,headlineAdapter).execute(ContentUrls.headline_head+num);  }  private voID initvIEw(VIEw vIEw) {    lv = ((ListVIEw) vIEw.findVIEwByID(R.ID.lv));    headerVIEw = LayoutInflater.from(getActivity()).inflate(R.layout.header_layout,null,false);    vIEwPager = ((VIEwPager)headerVIEw.findVIEwByID(R.ID.fragment_vIEwPager));    lv.addheaderVIEw(headerVIEw);    List=new ArrayList<>();    imgs=new ArrayList<>();    for (int i = 0; i < 3; i++) {      ImageVIEw iv=new ImageVIEw(getActivity());      imgs.add(iv);    }  }

adapter:

 class MyAdapter extends PagerAdapter{    @OverrIDe    public int getCount() {      return imgs.size();    }    @OverrIDe    public boolean isVIEwFromObject(VIEw vIEw,Object object) {      return vIEw==object;    }    @OverrIDe    public Object instantiateItem(VIEwGroup container,int @R_404_4612@) {      container.addVIEw(imgs.get(@R_404_4612@));      return imgs.get(@R_404_4612@);    }    @OverrIDe    public voID destroyItem(VIEwGroup container,int @R_404_4612@,Object object) {//      super.destroyItem(container,@R_404_4612@,object);      container.removeVIEw(imgs.get(@R_404_4612@));    }  }

(2)使用SlIDerLayout第三方进行实现轮播

添加依赖:

  compile 'com.squareup.picasso:picasso:2.5.2'  compile 'com.daimajia.slIDer:library:1.1.5@aar'  compile 'com.nineoldandroIDs:library:2.4.0'

xml代码:

<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"  androID:layout_wIDth="match_parent"  androID:layout_height="match_parent">  <com.daimajia.slIDer.library.SlIDerLayout    androID:ID="@+ID/header_slIDer"    androID:layout_wIDth="match_parent"    androID:layout_height="160dp"></com.daimajia.slIDer.library.SlIDerLayout></linearLayout>

Java代码:

private ListVIEw lv;  private String[] Title={"烟","超标","标准","审车合格"};  private int[] imgs={R.mipmap.a,R.mipmap.b,R.mipmap.c,R.mipmap.d};  private SlIDerLayout slIDer; @OverrIDe  public VIEw onCreateVIEw(LayoutInflater inflater,Bundle savedInstanceState) {    VIEw vIEw=inflater.inflate(R.layout.fragment_home_page,false);    lv = ((ListVIEw) vIEw.findVIEwByID(R.ID.homePage_lv));    VIEw headerVIEw=LayoutInflater.from(getActivity()).inflate(R.layout.header_layout,false);    slIDer = ((SlIDerLayout) headerVIEw.findVIEwByID(R.ID.header_slIDer));    lv.addheaderVIEw(headerVIEw);    initSlIDer();    initData();    return vIEw;  }  private voID initSlIDer() {    for (int i = 0; i < 4; i++) {      TextSlIDerVIEw textSlIDer=new TextSlIDerVIEw(getActivity());      textSlIDer.image(imgs[i]).description(Title[i]);      slIDer.addSlIDer(textSlIDer);      textSlIDer.setonSlIDerClickListener(new BaseSlIDerVIEw.OnSlIDerClickListener() {        @OverrIDe        public voID onSlIDerClick(BaseSlIDerVIEw slIDer) {          Toast.makeText(getActivity(),slIDer.getDescription(),Toast.LENGTH_SHORT).show();        }      });    }  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

总结

以上是内存溢出为你收集整理的Android实现轮播效果的两种方法全部内容,希望文章能够帮你解决Android实现轮播效果的两种方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1147057.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存