1、在Module的build.gradle文件导入依赖
//banner
implementation 'com.youth.banner:banner:2.1.0'
//glide图片加载器
implementation 'com.github.bumptech.glide:glide:4.15.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
2、在settings.gradle文件加入下面几行代码
pluginManagement {
repositories {
gradlePluginPortal()
google()
jcenter()//添加的代码
mavenCentral()
maven { url 'https://jitpack.io' }//添加的代码
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
jcenter()//添加的代码
mavenCentral()
maven { url 'https://jitpack.io' }//添加的代码
}
}
3、在AndroidManifest.xml文件加入网络权限
<uses-permission android:name="android.permission.INTERNET"/>
4、在布局文件中写入banner控件,代码如下
<com.youth.banner.Banner
android:id="@+id/banner"
android:layout_width="match_parent"
android:layout_height="200dp"/>
5、适配器代码
import android.content.Context;
import android.os.Build;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.youth.banner.adapter.BannerAdapter;
import com.youth.banner.util.BannerUtils;
import java.util.List;
public class ImageBannerAdapter extends BannerAdapter<String,ImageBannerAdapter.ImageHolder> {
private Context context;
public ImageBannerAdapter(Context context,List<String> datas) {
super(datas);
this.context = context;
}
@Override
public ImageBannerAdapter.ImageHolder onCreateHolder(ViewGroup parent, int viewType) {
ImageView imageView = (ImageView) BannerUtils.getView(parent, R.layout.item_imageview_layout);
if(Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
BannerUtils.setBannerRound(imageView,6f);
}
return new ImageHolder(imageView);
}
@Override
public void onBindView(ImageBannerAdapter.ImageHolder holder, String url, int position, int size) {
Glide.with(context)
.load(url)
.centerCrop()
.thumbnail(Glide.with(context).load(R.mipmap.ic_launcher))
.into(holder.imageView);
}
public class ImageHolder extends RecyclerView.ViewHolder {
public ImageView imageView;
public ImageHolder(@NonNull View itemView) {
super(itemView);
this.imageView = itemView.findViewById(R.id.image);
}
}
}
6、MainActivity代码如下
private Banner banner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
banner = (Banner) findViewById(R.id.banner);
}
ArrayList<BannerBean> bannerBeans = new ArrayList<>();
ArrayList<String> bannerBeans = new ArrayList<>();
//添加获取网络的图片,在浏览器上搜索一下就有很多图片,就不举例了
bannerBeans.add("1.jpg");
bannerBeans.add("2.jpg");
bannerBeans.add("3.jpg");
//创建适配器
ImageBannerAdapter imageBannerAdapter = new ImageBannerAdapter(this, bannerBeans);
banner.setAdapter(imageBannerAdapter);//写到这里就实现轮播图了
banner.setIndicator(new CircleIndicator(this),true);//设置指示器为原点