胆盐,单韶桦,调教坏男人
前言:现如今的很多app都介入了广告,不过,大多数都是以轮播图的形式展现的,我之前使用的是viewpage和自定义控件实现的这些功能,不过,相比于banner来说,效果还显示很逊色的,毕竟,现在的手机,性能都过剩,这些消耗,也不会太影响app的性能!
之前接入的是banner,现在突然间很想使用banner的升级版,我借鉴了xbanner的github介绍
一、xbanner简介
支持图片无限轮播的控件,可进行自定义功能。
1.添加gradle依赖
dependencies { compile 'com.xhb:xbanner:1.3.1' }
2.在清单文件中添加网络权限
<uses-permission android:name="android.permission.internet" />
3 由于xbanner中有可能从网络加载图片,因此也需要导入一些图片加载框架的依赖,如glide
`compile 'com.github.bumptech.glide:glide:3.7.0' compile 'jp.wasabeef:glide-transformations:1.0.6'`
4 在布局文件中添加xbanner
<com.stx.xhb.xbanner.xbanner xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/banner_1" android:layout_width="match_parent" android:layout_height="180dp" app:autoplaytime="3000" app:pointscontainerbackground="#44aaaaaa" app:pointnormal="@drawable/shape_noraml" app:pointselect="@drawable/shape_selected" app:pointsposition="right" app:tiptextsize="12sp" app:isshownumberindicator="true" app:isshowindicatoronlyone="true" app:pagechangeduration="800"/>
5 xbanner属性
属性名 属性说明 属性值 isautoplay 是否支持自动轮播 boolean类型,默认为true autoplaytime 图片轮播事件间隔 int类型,默认5000ms pointnormal 指示器未选中时的状态 drawable类型,不指定的话使用默认状态点 pointselect 指示器选中时的状态 drawable类型,不指定的话使用默认状态点 pointsvisible 是否显示指示器 boolean类型,默认为true pointsposition 指示点位置 center、left、right,默认center pointscontainerbackground 指示器条背景 color类型、drawable类型、mipmap类型等 pointcontainerposition 指示器条位置 top、bottom,默认bottom pointcontainerleftrightpadding 指示点容器左右内间距 dimension类型,默认10.0dip pointtopbottompadding 指示点上下内间距 dimension类型,默认6.0dip pointleftrightpadding 指示点左右内间距 dimension类型,默认3.0dip tiptextcolor 提示文字的颜色 reference类型 tiptextsize 提示文字的大小 dimension类型,默认10.0dp
6.在activity或者fragment中配置
banner = (xbanner) findviewbyid(r.id.banner); list<string> imgesurl = new arraylist<>(); imgesurl.add("http://img3.fengniao.com/forum/attachpics/913/114/36502745.jpg"); imgesurl.add("http://imageprocess.yitos.net/images/public/20160910/99381473502384338.jpg"); imgesurl.add("http://imageprocess.yitos.net/images/public/20160910/77991473496077677.jpg"); imgesurl.add("http://imageprocess.yitos.net/images/public/20160906/1291473163104906.jpg"); // 为xbanner绑定数据 banner .setdata(imgesurl,null);//第二个参数为提示文字资源集合 // xbanner适配数据 banner.setmadapter(new xbanner.xbanneradapter() { @override public void loadbanner(xbanner banner, view view, int position) { glide.with(mainactivity.this).load(imgesurl.get(position)).into((imageview) view); } }); // 设置xbanner的页面切换特效,选择一个即可,总的大概就这么多效果啦,欢迎使用 banner.setpagetransformer(transformer.default);//横向移动 banner.setpagetransformer(transformer.alpha); //渐变,效果不明显 banner.setpagetransformer(transformer.rotate); //单页旋转 banner.setpagetransformer(transformer.cube); //立体旋转 banner.setpagetransformer(transformer.flip); // 反转效果 banner.setpagetransformer(transformer.accordion); //三角换页 banner.setpagetransformer(transformer.zoomfade); // 缩小本页,同时放大另一页 banner.setpagetransformer(transformer.zoomcenter); //本页缩小一点,另一页就放大 banner.setpagetransformer(transformer.zoomstack); // 本页和下页同事缩小和放大 banner.setpagetransformer(transformer.stack); //本页和下页同时左移 banner.setpagetransformer(transformer.depth); //本页左移,下页从后面出来 banner.setpagetransformer(transformer.zoom); //本页刚左移,下页就在后面 // 设置xbanner页面切换的时间,即动画时长 banner.setpagechangeduration(1000);
7 监听广告 item 的单击事件
banner.setonitemclicklistener(new xbanner.onitemclicklistener() { @override public void onitemclick(xbanner banner, int position) { toast.maketext(mainactivity.this, "点击了第"+position+"图片", toast.length_short).show(); } });
8 为了更好的体验,建议j在添加以下代码
/** 为了更好的体验效果建议在下面两个生命周期中调用下面的方法 **/ @override protected void onresume() { super.onresume(); banner.startautoplay(); } @override protected void onstop() { super.onstop(); banner.stopautoplay(); }
9 混淆配置
##xbanner 图片轮播混淆配置 -keep class com.stx.xhb.xbanner.**{*;}
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Android Manifest中meta-data扩展元素数据的配置与获取方式
Android实现获取meta-data和build.gradle的值
Android获取清单文件中的meta-data,解决碰到数值为null的问题
解决webview 第二次调用loadUrl页面不刷新的问题
解决Android WebView拦截url,视频播放加载失败的问题
Android webview加载https链接错误或无响应的解决
网友评论