这一篇只讲应用不讲原理,看原理的同学可以关了。
github地址:https://github.com/wangshangyao/BaseBannerView
在github上把项目down下来,然后将项目中的Bannder以Model的形式导入你的项目。
首先:
在你的布局中声明控件
<com.yao.banner.BannerView
android:id="@+id/bannerView"
android:layout_width="match_parent"
android:layout_height="200dp"
app:bannerPageAlpha="1.0"
app:bannerPageMargin="2dp"
app:bannerPagePercent="0.9"
app:bannerPageScale="1"
app:bannerAnimScroll="true"
app:bannerAutoScroll="true"
app:bannerScrollDuration="4000"
app:bannerAnimDuration="1500"/>
然后我就不用多说了吧,找控件,创建适配器,并且我这里除了创建了一个适配器的基类BannerBaseAdapter以外,我还创建了一个实现类,可以直接用的那种,叫BannerAdapter。
这是适配器的实现类:
public class BannerAdapter extends BannerBaseAdapter<BannerBean> {
public BannerAdapter(Context context) {
super(context);
}
@Override
protected int getLayoutResID() {
return R.layout.item_banner;
}
@Override
protected void convert(View convertView, BannerBean data) {
setImage(R.id.pageImage, data.pic);
setText(R.id.pageText, data.title);
}
}
然后创建出适配器然后将你的数据给适配器:
BannerAdapter mAdapter = new BannerAdapter(this);
mAdapter.setData(arr);
还有设置监听:
mAdapter.setOnPageTouchListener(new BannerBaseAdapter.OnPageTouchListener<BannerBean>() {
@Override
public void onPageClick(int position, BannerBean bannerBean) {
// 页面点击
Toast.makeText(MainActivity.this, bannerBean.title, Toast.LENGTH_SHORT).show();
}
@Override
public void onPageDown() {
// 按下,可以停止轮播
// Toast.makeText(BannerActivity.this, "按下", Toast.LENGTH_SHORT).show();
bannerview.stopAutoScroll();
}
@Override
public void onPageUp() {
// 抬起开始轮播
// Toast.makeText(BannerActivity.this, "抬起", Toast.LENGTH_SHORT).show();
bannerview.startAutoScroll();
}
});
下面贴一下使用的所有代码:
MainActivity:
public class MainActivity extends AppCompatActivity {
private BannerView bannerview;
private BannerAdapter mAdapter;
private List<BannerBean> arr;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bannerview = (BannerView) findViewById(R.id.bannerView);
bannerview.setAdapter(mAdapter = new BannerAdapter(this));
arr = new ArrayList<>();
getData();
mAdapter.setData(arr);
mAdapter.setOnPageTouchListener(new BannerBaseAdapter.OnPageTouchListener<BannerBean>() {
@Override
public void onPageClick(int position, BannerBean bannerBean) {
// 页面点击
Toast.makeText(MainActivity.this, bannerBean.title, Toast.LENGTH_SHORT).show();
}
@Override
public void onPageDown() {
// 按下,可以停止轮播
// Toast.makeText(BannerActivity.this, "按下", Toast.LENGTH_SHORT).show();
bannerview.stopAutoScroll();
}
@Override
public void onPageUp() {
// 抬起开始轮播
// Toast.makeText(BannerActivity.this, "抬起", Toast.LENGTH_SHORT).show();
bannerview.startAutoScroll();
}
});
}
public void getData() {
arr.add(new BannerBean("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1511925155662&di=45bcb98c3f596d92e1615dba67e1f3fc&imgtype=0&src=http%3A%2F%2Fimage.tianjimedia.com%2FuploadImages%2F2015%2F131%2F26%2F40P9YQ26TB7H_1000x500.jpg","我是第一页"));
arr.add(new BannerBean("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1511925155750&di=8ef2360d0635e961f888542ce02947cf&imgtype=0&src=http%3A%2F%2Fimage.tianjimedia.com%2FuploadImages%2F2015%2F215%2F45%2F04L5VRR21C5W.jpg","我是第二页"));
arr.add(new BannerBean("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1511925155750&di=0d9d331fdc00ee7631236f29f3bdaac7&imgtype=0&src=http%3A%2F%2Fimage.tianjimedia.com%2FuploadImages%2F2013%2F255%2FHP4C7KBZQ0YP.jpg","我是第三页"));
arr.add(new BannerBean("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1511925155749&di=4d10f0073993bd92520dfa469eac76c2&imgtype=0&src=http%3A%2F%2Ff.hiphotos.baidu.com%2Fimage%2Fpic%2Fitem%2F5ab5c9ea15ce36d3c0a28ce330f33a87e850b1ba.jpg","我是第四页"));
arr.add(new BannerBean("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1511925155749&di=644e326706663155cc2ac3350bbaa0c7&imgtype=0&src=http%3A%2F%2Fh.hiphotos.baidu.com%2Fimage%2Fpic%2Fitem%2Fd000baa1cd11728be0f1acf0c2fcc3cec2fd2c07.jpg","我是第五页"));
}
}
到这里画廊效果就实现了,贴张效果图。
如果有什么扩展的需求或者我有什么遗失和错误欢迎评论,我会第一时间回复和更新。