导入Banner依赖
implementation 'io.github.youth5201314:banner:2.2.2'
|
activity_main.xml布局
banner_loop_time: 设置轮播间隔时间,默认3000;banner_radius: 设置轮播图的圆角
<com.youth.banner.Banner android:id="@+id/shouye_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"/>
|
设置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); }
|
常用属性设置
Banner.setIndicator(new CircleIndicator(this))
|
Banner.setIndicatorSelectedColor(Color.GREEN)
|
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); } }
|