使用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);
}
}
/**
* 接收子線程傳遞過來的數(shù)據
*/
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();
}