原博文地址:http://blog.csdn.net/qq_36621990/article/details/76020236
第一步:添加依赖
//图片轮播框架
implementation 'com.youth.banner:banner:1.4.10'
//glide,比较好的版本,Matisse版本,配合glide3.7.0,因为后面的glide版本没有了asbitmap等方法
implementation 'com.github.bumptech.glide:glide:3.7.0'
第二步:添加权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />/
第三步:布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto" tools:context=".ui.MainActivity"> <com.youth.banner.Banner android:layout_width="match_parent" android:layout_height="400px" android:id="@+id/banner" app:indicator_drawable_selected="@drawable/darkOrigin" app:indicator_drawable_unselected="@drawable/brighOrigin" app:indicator_height="20px" app:indicator_width="20px" app:indicator_margin="5px" /> </LinearLayout>
//@drawable/darkOrigin
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="@color/colorPrimary"/> </shape>
//@drawable/brighOrigin
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="@color/colorAccent"/> </shape>
第四步:在activity中设置轮播图
public class MainActivity extends AppCompatActivity implements OnBannerListener { private Banner mBinner; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initview(); } private void initview() { mBinner = findViewById(R.id.banner); //图片集合 List list_path = new ArrayList<Integer>(); list_path.add(R.mipmap.index1); list_path.add(R.mipmap.index2); list_path.add(R.mipmap.index3); //图片标题集合 List list_title = new ArrayList<String>(); list_title.add("标题1"); list_title.add("标题2"); list_title.add("标题3"); //设置内置样式,共有六种可以点入方法内逐一体验使用。 //CIRCLE_INDICATOR_TITLE_INSIDE : 显示标题和小圆点 //CIRCLE_INDICATOR : 显示小圆点,不现实标题 // DURATION : 小圆点、标题都不显示 mBinner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE); //设置图片加载器,图片加载器在下方 mBinner.setImageLoader(new MyLoader()); //设置图片网址或地址的集合 mBinner.setImages(list_path); //设置轮播的动画效果,内含多种特效,可点入方法内查找后内逐一体验 mBinner.setBannerAnimation(Transformer.FlipVertical); //设置轮播图的标题集合 mBinner.setBannerTitles(list_title); //设置轮播间隔时间 mBinner.setDelayTime(3000); //设置是否为自动轮播,默认是“是”。 mBinner.isAutoPlay(true); //设置指示器的位置,小点点,左中右。 mBinner.setIndicatorGravity(BannerConfig.CENTER); //以上内容都可写成链式布局,这是轮播图的监听。比较重要。方法在下面。 mBinner.setOnBannerListener(this); //必须最后调用的方法,启动轮播图。 mBinner.start(); } @Override public void OnBannerClick(int position) { //点击了之后的相关逻辑 Toast.makeText(MainActivity.this, "点击了" + position + "条数据", Toast.LENGTH_SHORT).show(); } //自定义的图片加载器 private class MyLoader extends ImageLoader { @Override public void displayImage(Context context, Object path, ImageView imageView) { GlideUtil.loadImg(context, (Integer) path, imageView); } } }
public class GlideUtil {
/** *网络图片 */ public static void loadImg(Context context, String url, final ImageView imageView) { Log.e("GlideUtil", "loadImg:图片加载地址 " + url); if (url != null) { File file = new File(url); Log.e(" FILE TEST", file.exists() ? "YES" : "NO"); Glide.with(context) .load(url) .apply(new RequestOptions().format(DecodeFormat.PREFER_RGB_565).skipMemoryCache(false).diskCacheStrategy(DiskCacheStrategy.AUTOMATIC)) // .signature(new StringSignature(UUID.randomUUID().toString())) .placeholder(R.drawable.loading) .error(R.mipmap.tpjzsb) .into(imageView); } else { imageView.setImageResource(R.mipmap.ic_launcher); } }
/** *本地图片 */ public static void loadImg(Context context, int res, ImageView imageView) { Glide.with(context) .load(res) .placeholder(R.drawable.loading) .error(R.mipmap.tpjzsb) .into(imageView); } }