当前位置: 首页 > news >正文

Android---Banner轮播图

轮播图是一种很常见的UI。Banner框架能够帮助我们快速开发,完成首页轮播图效果的需求。

1、导入Banner依赖

implementation 'io.github.youth5201314:banner:2.2.2'

2、activity_main.xml布局。

banner_loop_time: 设置轮播间隔时间,默认3000;banner_radius: 设置轮播图的圆角

<com.youth.banner.Banner
    android:id="@+id/main_banner"
    android:layout_width="match_parent"
    android:layout_height="210dp"
    app:banner_radius="15dp"
    android:layout_marginTop="15dp"
    android:layout_marginStart="10dp"
    android:layout_marginEnd="10dp"
    app:banner_loop_time="2000"
    />

 

3、设置Banner适配器

实现一个简单的轮播图效果,Banner框架已经帮我们做了一个适配器--BannerImageAdapter,可以直接使用。

Banner.setAdapter(new BannerImageAdapter(data))
banner.setAdapter(new BannerImageAdapter<Integer>(banner_data) {

            @Override
            public void onBindView(BannerImageHolder holder, Integer data, int position, int size) {
                holder.imageView.setImageResource(data);
            }
        });

 

data 是要轮播的数据(图片),放在drawable文件夹下。初始数据的代码

private void initData(){
        banner_data = new ArrayList<>();
        banner_data.add(R.drawable.banner001);
        banner_data.add(R.drawable.banner002);
        banner_data.add(R.drawable.banner003);
        banner_data.add(R.drawable.banner004);
        banner_data.add(R.drawable.banner005);
        banner_data.add(R.drawable.test006);
    }

4、常用属性设置

\bullet 设置自动循环播放;true == 自动播放

Banner.isAutoLoop(true);

\bullet 设置指示器

Banner.setIndicator(new CircleIndicator(this))

  \bullet 设置指示器选中时的颜色(即选中时小点的颜色)

Banner.setIndicatorSelectedColor(Color.GREEN)

  \bullet 设置指示器之间的距离

Banner.setIndicatorSpace(int)

 

完整代码

package com.example.bannertest;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Color;
import android.os.Bundle;

import com.youth.banner.Banner;
import com.youth.banner.adapter.BannerImageAdapter;
import com.youth.banner.holder.BannerImageHolder;
import com.youth.banner.indicator.CircleIndicator;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private Banner banner;
    private List<Integer> banner_data;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initData();
        banner = findViewById(R.id.main_banner);

        banner.setAdapter(new BannerImageAdapter<Integer>(banner_data) {

            @Override
            public void onBindView(BannerImageHolder holder, Integer data, int position, int size) {
                holder.imageView.setImageResource(data);
            }
        });

        // 开启循环轮播
        banner.isAutoLoop(true);
        banner.setIndicator(new CircleIndicator(this));
        banner.setScrollBarFadeDuration(1000);
        // 设置指示器颜色(TODO 即选中时那个小点的颜色)
        banner.setIndicatorSelectedColor(Color.GREEN);
        // 开始轮播
        banner.start();
    }

    private void initData(){
        banner_data = new ArrayList<>();
        banner_data.add(R.drawable.banner001);
        banner_data.add(R.drawable.banner002);
        banner_data.add(R.drawable.banner003);
        banner_data.add(R.drawable.banner004);
        banner_data.add(R.drawable.banner005);
        banner_data.add(R.drawable.test006);
    }
}

相关文章:

  • 太原的网站建设公司哪家好/windows优化工具
  • 网站后台管理系统后缀/网络营销平台名词解释
  • phpcms建站教程/市场调研一般怎么做
  • 重庆沙坪坝疫情/搜索引擎优化的英文缩写
  • 中策大数据工程信息网/北京度seo排名
  • 网推公司招聘/南宁seo主管
  • jQuery 动画
  • JavaScript数组类型
  • Fabric.js 元素中心缩放
  • FrameLayout布局案例
  • 满足耐压24V的USB3.0 USB3.1 Type-C防静电器件
  • msfconsole漏洞利用流程
  • K8s之Node亲和性调度
  • Session会话的简单使用
  • C++ :类和对象:文件操作
  • Vue3——路由的query参数和命名路由以及默认插槽slot的使用
  • java微信支付v3系列——8.微信支付之退款成功回调
  • Effective C++条款34:区分接口继承和实现继承