Banner 自动无限轮播(优化版)

例:



build.gradle中加入(加在最下面):添加之后需要点击右上角的   Sync Now   编译一下

dependencies {
    compile 'com.youth.banner:banner:1.4.10'
    compile 'com.google.code.gson:gson:2.2.4'
    compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
}


添加权限:

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

主方法类:

public class MainActivity extends AppCompatActivity {
    private Banner myBanner;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myBanner = findViewById(R.id.mybanner);
        MyTask myTask=new MyTask();
        myTask.execute("http://www.93.gov.cn/93app/data.do?channelId=0&startNum=0");
    }
    private void setBanner(List<String> urls) {
        //1.设置一个图片加载器
        myBanner.setImageLoader(new MyBannerLoader());
        //2.设置图片集合List<String> lists
        myBanner.setImages(urls);
        //3.启动
        myBanner.start();
    }
    //HttpURLConnection网络请求
    class MyTask extends AsyncTask<String,Void,String> {
        @Override
        protected String doInBackground(String... strings) {
            StringBuilder builder=new StringBuilder();
            //1.根据url创建URL
            try {
                URL url=new URL(strings[0]);
                //2.打开连接
                HttpURLConnection conn =(HttpURLConnection) url.openConnection();
                //3.设置
                conn.setRequestMethod("GET");
                conn.setConnectTimeout(5000);
                conn.setReadTimeout(5000);
                //4.判断结果码
                if(conn.getResponseCode()==200){
                    //5.获取数据
                    InputStream inputStream = conn.getInputStream();
                    BufferedReader reader=new BufferedReader(new InputStreamReader(inputStream));
                    String str;
                    while ((str=reader.readLine())!=null){
                        builder.append(str);
                    }
                }
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            Log.d("zzz",builder.toString());
            return builder.toString();
        }
        //async 执行完 doinbackground..后 马上来执行onPostExecute方法
        @Override
        protected void onPostExecute(String s) {
            Gson gson=new Gson();
            Result result = gson.fromJson(s, Result.class);
            //图片的url地址
            List<String> urls=new ArrayList<String>();
            List<Result.DataScrollBean> dataScroll = result.getDataScroll();
            for(int i=0;i<dataScroll.size();i++){
                urls.add("http://www.93.gov.cn"+dataScroll.get(i).getIMAGEURL());
            }
            setBanner(urls);
            //更新listview
//            MyAdapter adapter=new MyAdapter(result.getData().getPc_feed_focus(),MainActivity.this);
//            listView.setAdapter(adapter);
        }
    }
}

activity_main  布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.day_0529.MainActivity">

    <com.youth.banner.Banner
        android:id="@+id/mybanner"
        android:layout_width="match_parent"
        android:layout_height="300dp"/>

</RelativeLayout>

MyBannerLoader   图片加载类

//注意:继承的是banner.ImageLoader
public class MyBannerLoader extends ImageLoader {
    @Override
    public void displayImage(Context context, Object path, ImageView imageView) {
        DisplayImageOptions options=new DisplayImageOptions.Builder()
                .cacheInMemory(true)//使用内存缓存
                .cacheOnDisk(true)//使用磁盘缓存
                .showImageOnLoading(R.mipmap.ic_launcher)//设置正在下载的图片
                .showImageForEmptyUri(R.mipmap.ic_launcher)//url为空或请求的资源不存在时
                .showImageOnFail(R.mipmap.ic_launcher)//下载失败时显示的图片
                .bitmapConfig(Bitmap.Config.RGB_565)//设置图片色彩模式
                .imageScaleType(ImageScaleType.EXACTLY)//设置图片的缩放模式===imageView,,ScaleType
                .displayer(new RoundedBitmapDisplayer(50))//设置图片圆角显示  弧度
                .build();
        //params2:图片路径  params3:显示的控件上
        com.nostra13.universalimageloader.core.ImageLoader.getInstance().displayImage(path.toString(),imageView,options);
    }
}

MyApp  类:
<application/>在这个控件里加入属性:android:name=".MyApp"

public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        //自定义磁盘缓存路径  系统默认的缓存路径 sd...<package>..cache  app被卸载时,此路径下的缓存图片一并被删除
        //File cacheDir=getExternalCacheDir();
        File cacheDir= new File(Environment.getExternalStorageDirectory().getPath()+"/aaa");//自定义 sd卡的缓存路径
        //第一步:对ImageLoader进行初使化
        ImageLoaderConfiguration configuration=new ImageLoaderConfiguration.Builder(this)
                .memoryCacheExtraOptions(320, 450) // default = device screen dimensions 内存缓存文件的最大长宽
                .diskCacheExtraOptions(480, 800, null)  // 本地缓存的详细信息(缓存的最大长宽),最好不要设置这个
                .threadPriority(Thread.NORM_PRIORITY - 2) // default 设置当前线程的优先级
                .tasksProcessingOrder(QueueProcessingType.FIFO) // default
                .denyCacheImageMultipleSizesInMemory()
                .memoryCache(new LruMemoryCache(10 * 1024 * 1024)) //可以通过自己的内存缓存实现
                .memoryCacheSize(2 * 1024 * 1024)  // 内存缓存的最大值
                .memoryCacheSizePercentage(13) // default
//                .diskCache(new UnlimitedDiscCache(cacheDir)) // 磁盘缓存 --default 可以自定义缓存路径
                .diskCacheSize(20 * 1024 * 1024) // 50 Mb sd(本地)缓存的最大值
                .diskCacheFileCount(100)  // 可以缓存的文件数量
                // default为使用HASHCODEUIL进行加密命名, 还可以用MD5(new Md5FileNameGenerator())加密
                .diskCacheFileNameGenerator(new HashCodeFileNameGenerator())
                .imageDownloader(new BaseImageDownloader(this)) // default
                .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
                .writeDebugLogs() // 打印debug log
                .build();
        ImageLoader.getInstance().init(configuration);
    }
}

Result  类
http://www.93.gov.cn/93app/data.do?channelId=0&startNum=0

public class Result {
    /**
     * result : success
     * data : [{"ID":"31555694","TITLE":"围绕黄河流域生态文明建设与可持续发展 九三学社中央召开课题论证会","SUBTITLE":"520日,九三学社中央围绕黄河流域生态文明建设与可持续发展在北京召开课题论证会","IMAGEURL":"http://www.93.gov.cn/11002/upload/webcms/content/image/2018/05/22/15_26_57_712_97820_DSCF4911fb.jpg","FROMNAME":"九三学社中央宣传部","SHOWTIME":"2018-05-22","RN":1},{"ID":"31555669","TITLE":"九三学社中央社内监督工作研讨会在郑州召开","SUBTITLE":"517日,九三学社中央社内监督工作研讨会在郑州召开。全国政协副主席,九三学社中","IMAGEURL":"http://www.93.gov.cn/11002/upload/webcms/content/image/2018/05/21/15_24_30_793_48732_7P7A6176.jpg","FROMNAME":"九三学社中央组织部","SHOWTIME":"2018-05-21","RN":2},{"ID":"d2c921e6a1e3453eb5c0179c06760bd3","TITLE":"九三学社院士专家科普行走进昭通","SUBTITLE":"为继续扎实做好九三学社云南省委对口昭通市脱贫攻坚民主监督,帮助昭通市解决在脱贫攻","IMAGEURL":"http://www.93.gov.cn/11002/upload/webcms/content/image/2018/05/21/14_56_34_931_49150_ede25629609646e894bbb4f14d536e2f_DSC_1026.jpg","FROMNAME":"九三学社云南省委","SHOWTIME":"2018-05-21","RN":3},{"ID":"816c871278904f6c956507f0d9695488","TITLE":"十年再见  红了双眼","SUBTITLE":"\u2014\u2014汶川地震她失去了右臂,乐山社员医生让她重获新生","IMAGEURL":"http://www.93.gov.cn/11002/upload/webcms/content/image/2018/05/18/16_08_42_281_26198_78232ac782c54b1e88bec30b6c75eb79_QQtp20180517103001.jpg","FROMNAME":"九三学社乐山市委","SHOWTIME":"2018-05-21","RN":4},{"ID":"31555667","TITLE":"杨佳:不忘初心,不辱使命","SUBTITLE":"今年是中共中央\u201c五一口号\u201d发布70周年。温故而知新,重温历史,我们更加深切地体会","IMAGEURL":null,"FROMNAME":"九三学社中央宣传部","SHOWTIME":"2018-05-20","RN":5},{"ID":"31555668","TITLE":"给你舞台 秀出精彩","SUBTITLE":"\u2014\u2014九三学社中央打造青年工作创新平台","IMAGEURL":null,"FROMNAME":"团结报","SHOWTIME":"2018-05-20","RN":6},{"ID":"3b72439bb2f94939b1139c90037ba375","TITLE":"商山柞水寄深情 凝心聚力助脱贫","SUBTITLE":"\u2014\u2014赵雯率队赴陕西省商洛市柞水县开展脱贫攻坚民主监督","IMAGEURL":"http://www.93.gov.cn/11002/upload/webcms/content/image/2018/05/20/10_08_49_823_87194_0a928dd4ec4e4fc79eed43f945b8817d_01.webp.jpg","FROMNAME":"九三学社上海市委","SHOWTIME":"2018-05-19","RN":7},{"ID":"31555660","TITLE":"不负锦绣韶华 再踏豪迈征程","SUBTITLE":"\u2014\u2014九三学社中央青工委第四期培训班侧记","IMAGEURL":"http://www.93.gov.cn/11002/upload/webcms/content/image/2018/05/18/09_33_24_437_18218_mmexport1526450703298.jpg","FROMNAME":"九三学社中央宣传部","SHOWTIME":"2018-05-18","RN":8},{"ID":"2661f80ea8574506949591f6b95d420a","TITLE":"刘忠范赴石景山区调研\u201c街巷文化\u201d建设","SUBTITLE":"514日,九三学社中央副主席、北京市委主委刘忠范率\u201c文化北京专项行动\u201d课题组赴","IMAGEURL":null,"FROMNAME":"九三学社北京市委","SHOWTIME":"2018-05-17","RN":9},{"ID":"31555659","TITLE":"赵海英 金李建言金融风险防范","SUBTITLE":"全国政协15日在京召开\u201c健全系统性金融风险防范体系\u201d专题协商会。中共中央政治局常","IMAGEURL":"http://www.93.gov.cn/11002/upload/webcms/content/image/2018/05/17/14_39_47_603_73373_1122837234_15263940224111n.jpg","FROMNAME":"九三学社中央宣传部","SHOWTIME":"2018-05-17","RN":10},{"ID":"31555656","TITLE":"印红出席第十一届全国五好家庭表彰大会","SUBTITLE":"为纪念\u201c5\u202215\u201d国际家庭日,全国妇联15日在北京人民大会堂举办第十一届全国五好","IMAGEURL":null,"FROMNAME":"中国妇女报","SHOWTIME":"2018-05-16","RN":11},{"ID":"31555650","TITLE":"九三学社中央青工委第四期培训班在京举办 武维华出席并讲话","SUBTITLE":"513日至15日,九三学社中央青工委第四期培训班在中央社会主义学院举办,全国人","IMAGEURL":"http://www.93.gov.cn/11002/upload/webcms/content/image/2018/05/16/16_01_54_038_61514_mmexport1526450489403.jpg","FROMNAME":"九三学社中央宣传部","SHOWTIME":"2018-05-16","RN":12},{"ID":"31555648","TITLE":"武维华:胸怀远大理想 牢记历史使命 在新时代谱写九三青年华彩乐章","SUBTITLE":"\u2014\u2014在九三学社中央青年工作委员会第四期培训班结业式上的讲话","IMAGEURL":null,"FROMNAME":"九三学社中央宣传部","SHOWTIME":"2018-05-16","RN":13},{"ID":"31555649","TITLE":"杭州:\u201c六个一\u201d纪念\u201c五一口号\u201d发布70周年","SUBTITLE":"今年是中共中央发布\u201c五一口号\u201d70周年。纪念这个具有里程碑意义的大事,就是回溯\u201c","IMAGEURL":"http://www.93.gov.cn/11002/upload/webcms/content/image/2018/05/21/16_26_59_107_07271_wszsjs.png","FROMNAME":"九三学社杭州市委","SHOWTIME":"2018-05-16","RN":14},{"ID":"b0e861971f21460da686b258c4a95649","TITLE":"新时代  新青年  新起航","SUBTITLE":"九三学社北京市委青工委换届大会暨\u201c创新有术\u201d青年活动创新设计大赛举办","IMAGEURL":null,"FROMNAME":"九三学社北京市委","SHOWTIME":"2018-05-15","RN":15},{"ID":"31555624","TITLE":"武维华观看新创黄梅戏《邓稼先》","SUBTITLE":"514日晚,新创黄梅戏《邓稼先》在国家大剧院演出。全国人大常委会副委员长、九三","IMAGEURL":"http://www.93.gov.cn/11002/upload/webcms/content/image/2018/05/15/09_14_41_220_86507_1348907381.jpg","FROMNAME":"九三学社中央宣传部","SHOWTIME":"2018-05-15","RN":16},{"ID":"31555640","TITLE":"武维华一行与湖北九三学社社员座谈","SUBTITLE":"510日,九三学社十四届三次中常会召开期间,全国人大常委会副委员长、九三学社中","IMAGEURL":"http://www.93.gov.cn/11002/upload/webcms/content/image/2018/05/15/10_08_15_554_75815_002.jpg","FROMNAME":"九三学社湖北省委","SHOWTIME":"2018-05-15","RN":17},{"ID":"31555623","TITLE":"九三学社十四届三次中常会在武汉召开 武维华出席并讲话","SUBTITLE":"510日至11日,九三学社第十四届中央常务委员会第三次会议在武汉召开。会议主题","IMAGEURL":"http://www.93.gov.cn/11002/upload/webcms/content/image/2018/05/15/08_46_12_763_68977_003.jpg","FROMNAME":"九三学社中央宣传部","SHOWTIME":"2018-05-15","RN":18},{"ID":"31555621","TITLE":"九三学社启动\u201c助推京津冀协同发展行动\u201d","SUBTITLE":"59日,九三学社\u201c助推京津冀协同发展行动\u201d启动暨领导小组第一次会议在武汉召开。","IMAGEURL":"http://www.93.gov.cn/11002/upload/webcms/content/image/2018/05/15/09_11_07_129_22185_01.jpg","FROMNAME":"九三学社中央宣传部","SHOWTIME":"2018-05-14","RN":19},{"ID":"7775c4d809894925a33c8cf1d01328e7","TITLE":"武维华走访九三学社江西省委机关","SUBTITLE":"58日下午,全国人大常委会副委员长、九三学社中央主席武维华走访九三学社江西省委","IMAGEURL":"http://www.93.gov.cn/11002/upload/webcms/content/image/2018/05/11/14_27_29_312_98112_eb3e619f90c94927abc045fb0bff055d_QQtp20180509162149.jpg","FROMNAME":"九三学社江西省委","SHOWTIME":"2018-05-11","RN":20}]
     * dataScroll : [{"ID":"31555669","TITLE":"九三学社中央社内监督工作研讨会在郑州召开","SUBTITLE":null,"IMAGEURL":"/11002/upload/webcms/content/image/2018/05/21/15_25_06_491_03398_7P7A6176.jpg","FROMNAME":"九三学社中央组织部","SHOWTIME":"2018-05-21","RN":1},{"ID":"31555650","TITLE":"九三学社中央青工委第四期培训班在京举办 武维华出席并讲话","SUBTITLE":null,"IMAGEURL":"/11002/upload/webcms/content/image/2018/05/16/16_11_19_393_75029_mmexport1526450902206.jpg","FROMNAME":"九三学社中央宣传部","SHOWTIME":"2018-05-16","RN":2},{"ID":"31555623","TITLE":"九三学社十四届三次中常会在武汉召开 武维华出席并讲话","SUBTITLE":null,"IMAGEURL":"/11002/upload/webcms/content/image/2018/05/15/08_51_45_039_76428_003_fb.jpg","FROMNAME":"九三学社中央宣传部","SHOWTIME":"2018-05-15","RN":3},{"ID":"31555624","TITLE":"武维华观看新创黄梅戏《邓稼先》","SUBTITLE":null,"IMAGEURL":"/11002/upload/webcms/content/image/2018/05/15/09_16_02_359_98318_1348907381.jpg","FROMNAME":"九三学社中央宣传部","SHOWTIME":"2018-05-15","RN":4},{"ID":"31555584","TITLE":"美丽乡村需要宜居环境","SUBTITLE":"\u2014\u2014九三学社中央召开第十三届\u201c九三论坛\u201d","IMAGEURL":"/11002/upload/webcms/content/image/2018/05/11/09_59_02_736_59960_01.jpg","FROMNAME":"九三学社中央宣传部","SHOWTIME":"2018-05-11","RN":5}]
     */
    private String result;
    private List<DataBean> data;
    private List<DataScrollBean> dataScroll;
    public String getResult() {
        return result;
    }
    public void setResult(String result) {
        this.result = result;
    }
    public List<DataBean> getData() {
        return data;
    }
    public void setData(List<DataBean> data) {
        this.data = data;
    }
    public List<DataScrollBean> getDataScroll() {
        return dataScroll;
    }
    public void setDataScroll(List<DataScrollBean> dataScroll) {
        this.dataScroll = dataScroll;
    }
    public static class DataBean {
        /**
         * ID : 31555694
         * TITLE : 围绕黄河流域生态文明建设与可持续发展 九三学社中央召开课题论证会
         * SUBTITLE : 520日,九三学社中央围绕黄河流域生态文明建设与可持续发展在北京召开课题论证会
         * IMAGEURL : http://www.93.gov.cn/11002/upload/webcms/content/image/2018/05/22/15_26_57_712_97820_DSCF4911fb.jpg
         * FROMNAME : 九三学社中央宣传部
         * SHOWTIME : 2018-05-22
         * RN : 1
         */
        private String ID;
        private String TITLE;
        private String SUBTITLE;
        private String IMAGEURL;
        private String FROMNAME;
        private String SHOWTIME;
        private int RN;
        public String getID() {
            return ID;
        }
        public void setID(String ID) {
            this.ID = ID;
        }
        public String getTITLE() {
            return TITLE;
        }
        public void setTITLE(String TITLE) {
            this.TITLE = TITLE;
        }
        public String getSUBTITLE() {
            return SUBTITLE;
        }
        public void setSUBTITLE(String SUBTITLE) {
            this.SUBTITLE = SUBTITLE;
        }
        public String getIMAGEURL() {
            return IMAGEURL;
        }
        public void setIMAGEURL(String IMAGEURL) {
            this.IMAGEURL = IMAGEURL;
        }
        public String getFROMNAME() {
            return FROMNAME;
        }
        public void setFROMNAME(String FROMNAME) {
            this.FROMNAME = FROMNAME;
        }
        public String getSHOWTIME() {
            return SHOWTIME;
        }
        public void setSHOWTIME(String SHOWTIME) {
            this.SHOWTIME = SHOWTIME;
        }
        public int getRN() {
            return RN;
        }
        public void setRN(int RN) {
            this.RN = RN;
        }
    }
    public static class DataScrollBean {
        /**
         * ID : 31555669
         * TITLE : 九三学社中央社内监督工作研讨会在郑州召开
         * SUBTITLE : null
         * IMAGEURL : /11002/upload/webcms/content/image/2018/05/21/15_25_06_491_03398_7P7A6176.jpg
         * FROMNAME : 九三学社中央组织部
         * SHOWTIME : 2018-05-21
         * RN : 1
         */
        private String ID;
        private String TITLE;
        private Object SUBTITLE;
        private String IMAGEURL;
        private String FROMNAME;
        private String SHOWTIME;
        private int RN;
        public String getID() {
            return ID;
        }
        public void setID(String ID) {
            this.ID = ID;
        }
        public String getTITLE() {
            return TITLE;
        }
        public void setTITLE(String TITLE) {
            this.TITLE = TITLE;
        }
        public Object getSUBTITLE() {
            return SUBTITLE;
        }
        public void setSUBTITLE(Object SUBTITLE) {
            this.SUBTITLE = SUBTITLE;
        }
        public String getIMAGEURL() {
            return IMAGEURL;
        }
        public void setIMAGEURL(String IMAGEURL) {
            this.IMAGEURL = IMAGEURL;
        }
        public String getFROMNAME() {
            return FROMNAME;
        }
        public void setFROMNAME(String FROMNAME) {
            this.FROMNAME = FROMNAME;
        }
        public String getSHOWTIME() {
            return SHOWTIME;
        }
        public void setSHOWTIME(String SHOWTIME) {
            this.SHOWTIME = SHOWTIME;
        }
        public int getRN() {
            return RN;
        }
        public void setRN(int RN) {
            this.RN = RN;
        }
    }
}




















猜你喜欢

转载自blog.csdn.net/jun_tong/article/details/80491308