Android-------使用第三方Banner实现对网络图片的无线轮播

来源:互联网 发布:慈溪行知职高论坛 编辑:程序博客网 时间:2024/05/21 06:31

参考网址:https://github.com/search(很详细)

使用步骤:

1.在build.gradle中加入包,点击右上角的同步:

compile 'com.youth.banner:banner:1.4.9'

2.添加权限到你的 AndroidManifest.xm

<uses-permission android:name="android.permission.INTERNET"> </uses-permission>    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

3.在布局文件中添加Banner,可以设置自定义属性

<?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.youth.banner.Banner    android:id="@+id/ban"    android:layout_width="match_parent"    android:layout_height="250dp"></com.youth.banner.Banner></LinearLayout>4.写一个图片加载器类并继承ImageLoader
//定义的一个Bannerde 图片加载器,继承ImageLoaderpublic class BannerImageLoad extends ImageLoader{     //在该方法内用Glide进行加载图片    @Override    public void displayImage(Context context, Object path, ImageView imageView) {        Glide.with(context).load(path).into(imageView);    }}

5.在Activity或者Fragment中配置Banner(这里是在一个Fragment中进行配置的)

public class Fragment1 extends Fragment {    private Banner ban;    private String urlpath="http://zkread.com/htnewsroom/articles/tops";    private Handler hand=new Handler(){        @Override        public void handleMessage(Message msg) {            if(msg.what==1){                //用Gson解析数据并得到该数据的类                Gson gson=new Gson();                News news = gson.fromJson(msg.obj.toString(), News.class);                //得到要展示的图片和标题的类的集合并遍历                List<News.DataBean> data = news.getData();                //新建一个存放图片的集合和标题的集合                ArrayList<String> images=new ArrayList<>();                ArrayList<String> title=new ArrayList<>();                //遍历完后把相应的数据添加到集合中                for (News.DataBean bean:data){                    images.add(bean.getImgSrc());                    title.add(bean.getTitle());                }                //将图片和标题设置到Banner中                ban.setImages(images);                ban.setBannerTitles(title);                //开启Banner                ban.start();            }        }    };    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View view = inflater.inflate(R.layout.fragment1, container, false);        ban=(Banner)view.findViewById(R.id.ban);        //设置Banner        initview();        //加载网络数据        loaddata();        return view;    }    private void loaddata() {     new Thread(){         @Override         public void run() { //HttpUrl为一个写好的通过HttpUrlConnection对网络进行请求的类(里面有get和post请求) String str = HttpUrl.getUrlConnect(urlpath);             Message msg=new Message();             msg.what=1;             msg.obj=str;             hand.sendMessage(msg);         }     }.start();    }    private void initview() {     //设置图片加载器        BannerImageLoad bil=new BannerImageLoad();        ban.setImageLoader(bil);        //设置显示样式(显示数字指示器和标题)        ban.setBannerStyle(BannerConfig.NUM_INDICATOR_TITLE);       /* 
 //设置banner样式    banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE);    //设置图片加载器    banner.setImageLoader(new GlideImageLoader());    //设置图片集合    banner.setImages(images);    //设置banner动画效果    banner.setBannerAnimation(Transformer.DepthPage);    //设置标题集合(当banner样式有显示title时)    banner.setBannerTitles(titles);    //设置自动轮播,默认为true    banner.isAutoPlay(true);    //设置轮播时间    banner.setDelayTime(1500);    //设置指示器位置(当banner模式中有指示器时)    banner.setIndicatorGravity(BannerConfig.CENTER);
*/ }}






阅读全文
0 0