android轮播图Banner的简单使用

原博文地址: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);

    }
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值