1. 程式人生 > >Android 實現輪播效果(利用開源控制元件)

Android 實現輪播效果(利用開源控制元件)

首先匯入依賴

 implementation 'com.youth.banner:banner:1.4.10'

在佈局檔案中新增

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

重寫圖片載入器

public class GlideImageLoader extends ImageLoader {
    @Override
    public void displayImage(Context context, Object path, ImageView imageView) {
        /**
         注意:
         1.圖片載入器由自己選擇,這裡不限制,只是提供幾種使用方法
         2.返回的圖片路徑為Object型別,由於不能確定你到底使用的那種圖片載入器,
         傳輸的到的是什麼格式,那麼這種就使用Object接收和返回,你只需要強轉成你傳輸的型別就行,
         切記不要胡亂強轉!
         */
//        eg:

        //Glide 載入圖片簡單用法
        Glide.with(context).load(path).into(imageView);

        //Picasso 載入圖片簡單用法
//        Picasso.with(context).load(path).into(imageView);

        //用fresco載入圖片簡單用法,記得要寫下面的createImageView方法
//        Uri uri = Uri.parse((String) path);
//        imageView.setImageURI(uri);
    }

    //提供createImageView 方法,如果不用可以不重寫這個方法,主要是方便自定義ImageView的建立
//    @Override
//    public ImageView createImageView(Context context) {
//        //使用fresco,需要建立它提供的ImageView,當然你也可以用自己自定義的具有圖片載入功能的ImageView
//        SimpleDraweeView simpleDraweeView=new SimpleDraweeView(context);
//        return simpleDraweeView;
//    }
}

在Activity或者Fragment中配置

       Banner banner = (Banner) findViewById(R.id.fragment_main_home_banner);
        //設定banner樣式
        banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR);
        //設定圖片載入器
        banner.setImageLoader(new GlideImageLoader());
        //設定圖片集合

        List<Integer> image = new ArrayList<>();
        image.add(R.drawable.icon);
        image.add(R.drawable.welcome_bg);
        banner.setImages(image);

        //設定banner動畫效果
        banner.setBannerAnimation(Transformer.DepthPage);
        //設定標題集合(當banner樣式有顯示title時)
//        List<String> titles = new ArrayList<>();
//        titles.add("圖1");
//        titles.add("圖2");
//        banner.setBannerTitles(null);
        //設定自動輪播,預設為true
        banner.isAutoPlay(true);
        //設定輪播時間
        banner.setDelayTime(3000);
        //設定指示器位置(當banner模式中有指示器時)
        banner.setIndicatorGravity(BannerConfig.CENTER);
        //banner設定方法全部呼叫完畢時最後呼叫
        banner.start();