1:导依赖
compile 'com.xhb:xbanner:1.2.2' compile 'com.nineoldandroids:library:2.4.0'2 :要导入一些图片加载框架的依赖,如Glide
compile 'com.github.bumptech.glide:glide:3.5.2'
3:请求数据要用网络权限
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
4:布局
<com.stx.xhb.xbanner.XBanner android:id="@+id/banner" android:layout_width="match_parent" android:layout_height="200.0dip" app:AutoPlayTime="3000" app:pointNormal="@drawable/print_no" app:pointSelect="@drawable/print_xuan" app:pointsContainerBackground="#44AAAAAA" app:pointsPosition="CENTER" app:tipTextColor="#FFFFFFFF" app:tipTextSize="16.0sp"></com.stx.xhb.xbanner.XBanner>
5:设置小圆点选中的颜色,以及大小
//选中的状态 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="#ff0000"></solid> <size android:width="10dp" android:height="10dp"></size> </shape> //未选中的状态<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="#00ff00"></solid> <size android:width="10dp" android:height="10dp"></size> </shape>6:接下来就是代码了 我这是在fragment里面写的public class NewsFragment extends Fragment { private ListView lv; private XBanner banner; private List<User.ResultInfo.AdvsInfo> advs; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.news_fragment, null); lv= (ListView) view.findViewById(R.id.lv); banner= (XBanner) view.findViewById(R.id.banner); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); //获取网络数据 getServerData(); } private void getServerData() { AsyncHttpClient client=new AsyncHttpClient(); String url="http://www.babybuy100.com/API/getShopOverview.ashx"; client.get(getActivity(), url, new TextHttpResponseHandler() { @Override public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) { } @Override public void onSuccess(int statusCode, Header[] headers, String responseString) { Gson gson=new Gson(); User user = gson.fromJson(responseString, User.class); advs = user.result.advs; //为XBanner绑定数据 banner.setData(advs,null); // XBanner适配数据 banner.setmAdapter(new XBanner.XBannerAdapter() { @Override public void loadBanner(XBanner banner, View view, int position) { Glide.with(getActivity()).load(advs.get(position).pic).into((ImageView) view); } }); // 设置XBanner的页面切换特效 banner.setPageTransformer(Transformer.Default); // 设置XBanner页面切换的时间,即动画时长 banner.setPageChangeDuration(1000); // XBanner中某一项的点击事件 banner.setOnItemClickListener(new XBanner.OnItemClickListener() { @Override public void onItemClick(XBanner banner, int position) { Toast.makeText(getActivity(), "点击了第" + (position + 1) + "张图片", Toast.LENGTH_SHORT).show(); } }); } }); } @Override public void onResume() { super.onResume(); banner.startAutoPlay(); } @Override public void onStop() { super.onStop(); banner.stopAutoPlay(); } } 参考博客 http://www.cnblogs.com/itgungnir/p/6210891.html
属性名 | 属性说明 | 属性值 |
---|---|---|
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 |