使用Banner需要引入依赖
//Banner
compile 'com.youth.banner:banner:1.4.10'
//Glide框架
compile "com.github.bumptech.glide:glide:4.6.1"
首先来设值xml文件
<com.youth.banner.Banner
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/banner1"
android:layout_width="match_parent"
android:layout_height="180dp"
app:indicator_height="8dp"
app:indicator_margin="4dp"
app:indicator_width="8dp" />
其次就是我们的java代码
/*轮播图*/
private Banner banner;
private ArrayList<String> list_path = new ArrayList<>();
private ArrayList<String> list_title = new ArrayList<>();
这个是用来设置轮播图的标题和图片集合的方法
private void initData() {
if (inPathImg != null && inPathImg != "") {
list_path.add(inPathImg);
} else {
list_path.add(R.drawable.no_image+"");
}
if (outPathImg != null && outPathImg != "") {
list_path.add(outPathImg);
} else {
list_path.add(R.drawable.no_image+"");
}
list_title.add("进车图片");
list_title.add("出车图片");
}
需要一个刷新图片的类GlideImageLoader .java
public class GlideImageLoader extends ImageLoader {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
//具体方法内容自己去选择,次方法是为了减少banner过多的依赖第三方包,所以将这个权限开放给使用者去选择
Glide.with(context.getApplicationContext())
.load(path)
.into(imageView);
}
@Override
public ImageView createImageView(Context context) {
ImageView imageView = new ImageView(context);
imageView.setMaxWidth(100);
return imageView;
}
}
设置banner的初始化方法
private void initView() {
banner = (Banner) view.findViewById(R.id.banner1);
//设置banner样式
banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE);
//设置banner动画效果
banner.setBannerAnimation(Transformer.DepthPage);
banner.isAutoPlay(false);
//设置轮播间隔时间
banner.setDelayTime(3000);
banner.setBannerTitles(list_title);
//简单使用
banner.setImages(list_path)
.setImageLoader(new GlideImageLoader())
.setOnBannerListener(this)
.start();
}
然后在onCreateView方法里调用 initView()和initData方法就可以啦~~~
设置轮播图的小圆点 定义适配器等
/*定义的适配器*/
public class ViewPagerAdapter extends PagerAdapter {
@Override
public int getCount() {
return images.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
@Override
public void destroyItem(ViewGroup view, int position, Object object) {
// TODO Auto-generated method stub
// super.destroyItem(container, position, object);
// view.removeView(view.getChildAt(position));
// view.removeViewAt(position);
view.removeView(images.get(position));
}
@Override
public Object instantiateItem(ViewGroup view, int position) {
// TODO Auto-generated method stub
view.addView(images.get(position));
return images.get(position);
}
}
/**
* 接收子线程传递过来的数据
*/
private Handler mHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
mViewPaper.setCurrentItem(currentItem);
}
;
};
@Override
public void onStop() {
// TODO Auto-generated method stub
super.onStop();
if (scheduledExecutorService != null) {
scheduledExecutorService.shutdown();
scheduledExecutorService = null;
}
}
也可以给设置的图片设置点击事件
@Override
public void OnBannerClick(int position) {
Toast.makeText(getContext(), "你点了第" + (position + 1) + "张轮播图", Toast.LENGTH_SHORT).show();
}