轮播图(使用Banner)

来源:互联网 发布:单片机编程c语言 编辑:程序博客网 时间:2024/06/04 18:05

demo,百度云盘地址

https://pan.baidu.com/s/1bGMRKi

github地址

https://github.com/youth5201314/banner

使用挺简单的
1.
Step 1.依赖banner

Gradle

dependencies{    compile 'com.youth.banner:banner:1.4.10'  //最新版本}

Step 2.添加权限到你的 AndroidManifest.xml

<!-- if you want to load images from the internet --><uses-permission android:name="android.permission.INTERNET" /> <!-- if you want to load images from a file OR from the internet --><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

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

<com.youth.banner.Banner    xmlns:app="http://schemas.android.com/apk/res-auto"    android:id="@+id/banner"    android:layout_width="match_parent"    android:layout_height="高度自己设置" />

Step 4.重写图片加载器

public class GlideImageLoader extends ImageLoader {    @Override    public void displayImage(Context context, Object path, ImageView imageView) {        /**          注意:          1.图片加载器由自己选择,这里不限制,只是提供几种使用方法          2.返回的图片路径为Object类型,由于不能确定你到底使用的那种图片加载器,          传输的到的是什么格式,那么这种就使用Object接收和返回,你只需要强转成你传输的类型就行,          切记不要胡乱强转!         */        eg:        //Glide 加载图片简单用法        Glide.with(context).load(path).into(imageView);        //Picasso 加载图片简单用法        Picasso.with(context).load(path).into(imageView);        //用fresco加载图片简单用法,记得要写下面的createImageView方法        Uri uri = Uri.parse((String) path);        imageView.setImageURI(uri);    }    //提供createImageView 方法,如果不用可以不重写这个方法,主要是方便自定义ImageView的创建    @Override    public ImageView createImageView(Context context) {        //使用fresco,需要创建它提供的ImageView,当然你也可以用自己自定义的具有图片加载功能的ImageView        SimpleDraweeView simpleDraweeView=new SimpleDraweeView(context);        return simpleDraweeView;    }}

Step 5.在Activity或者Fragment中配置Banner
注意!start()方法必须放到最后执行,点击事件请放到start()前,每次都提交问题问为什么点击没有反应?需要轮播一圈才能点击?点击第一个怎么返回1?麻烦仔细阅读文档。

@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    Banner banner = (Banner) findViewById(R.id.banner);    //设置图片加载器    banner.setImageLoader(new GlideImageLoader());    //设置图片集合    banner.setImages(images);    //banner设置方法全部调用完毕时最后调用    banner.start();}

public class FourActivity extends AppCompatActivity {    List<BannerImg> imglist;    Banner banner;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_four);        imglist = new ArrayList<>();        setViewPagerData();    }    String json;    private void setViewPagerData() {        OkhttpUtil.get(URLUtil.government_banner_url_new, new Callback() {            @Override            public void onFailure(Call call, IOException e) {            }            @Override            public void onResponse(Call call, final Response response) throws IOException {                json = response.body().string();                runOnUiThread(new Runnable() {                    @Override                    public void run() {                        Log.i("sanactivity",json);                        if (json.startsWith("{") || json.startsWith("[")) {                            try {                                Log.i("banner", json);                                JSONObject object = new JSONObject(json);                                String errno = object.getString("errno");                                switch (errno) {                                    case "200":                                        String data = object.getString("data");                                        Gson gson = new Gson();                                        Type type = new TypeToken<List<BannerImg>>() {                                        }.getType();                                        List<String>images=new ArrayList<>();                                        imglist = gson.fromJson(data, type);                                        for(int i=0;i<imglist.size();i++){                                            images.add(imglist.get(i).getPic());                                        }                                        banner = (Banner) findViewById(R.id.banner);                                        //设置图片加载器                                        banner.setImageLoader(new GlideImageLoader());                                        //设置图片集合                                        banner.setImages(images);                                        //banner设置方法全部调用完毕时最后调用                                        banner.start();                                        break;                                }                            } catch (JSONException e) {                                e.printStackTrace();                            }                        }                    }                });            }        });    }}
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 加油卡忘记密码怎么办 不记名油卡怎么办 壳牌加油卡怎么办 韩文怎么办怎么说谐音 联通流量超了怎么办 移动流量封顶了怎么办 联通怎么办流量加油包 车玻璃水冻了怎么办 汽车玻璃水冻了怎么办 冬天玻璃水冻了怎么办 没有爱的婚姻怎么办 问卷星敏感审核怎么办 大理石窗台浸油怎么办 老婆总是爱抱怨怎么办 领导故意针对我怎么办 宿舍室友很吵怎么办 室友太吵睡不着怎么办 考研复试没过怎么办 猫喜欢翻垃圾桶怎么办 跑滴滴车被扣了怎么办 滴滴快车停车费怎么办 鼻翼宽怎么办小窍门 捏鼻子变了怎么办 去韩国手机流量怎么办 玩血染小镇卡怎么办 清香木叶子枯萎怎么办 清香木黄叶子怎么办 胡椒木叶子发黄怎么办 木香花不开花怎么办 txt章节已加密怎么办 传奇世界71级该怎么办 过敏性鼻炎治不好怎么办 10岁小朋友便秘怎么办 10岁儿童便秘怎么办 婴儿1个月大便秘怎么办 孩子便秘怎么办最有效 长期便秘很严重怎么办? 孩子总便秘怎么办呢 九个月宝宝便秘怎么办 八岁儿童便秘怎么办 3岁儿童便秘怎么办