Android 轮播图banner框架的使用

最近发现了一个不错的轮播图框架,分享一下。

效果图:

一、添加依赖

在build.gradle中添加banner依赖

implementation ‘com.youth.banner:banner:1.4.10’

推荐使用glide框架加载图片,本文也使用glide框架

implementation ‘com.github.bumptech.glide:glide:3.7.0’

implementation ‘jp.wasabeef:glide-transformations:2.0.1’

二、基本使用

xml

<com.youth.banner.Banner
        android:id="@+id/banner"
        android:layout_width="match_parent"
        android:layout_height="150dp">
 com.youth.banner.Banner>

我是在fragment中使用

public class one extends Fragment {
	//黄油刀框架,属实简化绑定操作
    @BindView(R.id.banner)
    Banner banner;
	
	//指定图片地址
    List<String> imagePaths;
    //指定轮播图每个图片的title
    List<String> imageTitles;
	//ButterKnife框架的使用
    Unbinder unbinder;

    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.one, null);

		//黄油刀框架
        unbinder = ButterKnife.	bind(this, view);
        return view;
    }

    public void initData() {
        imagePaths=new ArrayList<>();
        imageTitles=new ArrayList<>();
        imagePaths.add("https://cn.bing.com/az/hprichbg/rb/Dongdaemun_ZH-CN10736487148_1920x1080.jpg");
        imagePaths.add("https://cn.bing.com/az/hprichbg/rb/Dongdaemun_ZH-CN10736487148_1920x1080.jpg");
        imagePaths.add("https://cn.bing.com/az/hprichbg/rb/Dongdaemun_ZH-CN10736487148_1920x1080.jpg");
        imageTitles.add("ss");
        imageTitles.add("ss");
        imageTitles.add("ss");
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        initData();
        
        
        banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE);

        banner.setImageLoader(new imageLoader());

        banner.setBannerTitles(imageTitles);

		//指示器位置
        banner.setIndicatorGravity(BannerConfig.RIGHT);

        banner.setImages(imagePaths).setOnBannerListener(new OnBannerListener() {
            @Override
            public void OnBannerClick(int position) {
                switch (position) {
                    case 0:
                        System.out.println("111");
                        break;
                    case 1:
                        System.out.println("111");
                        break;
                    case 2:
                        System.out.println("111");
                        break;
                }
            }
        });
        banner.start();
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        unbinder.unbind();
    }
    
//自定义imageloader,重写方法
    public class imageLoader extends ImageLoader {

        @Override
        public void displayImage(Context context, Object path, ImageView imageView) {
            Glide.with(context).load((String)path).into(imageView);
            System.out.println(path.toString()+"1");

        }
    }
}

注意

  • banner设置完基本属性后一定要start。
  • start方法一定要在Click方法之后,不然会无法触发Click事件

参考:https://blog.csdn.net/Wen_dey/article/details/88073941

你可能感兴趣的:(Android)