BannerView
源码地址: BannerView
一个基于FrameLayout+ViewPager+FragmentPagerAdapter的轮播图
特点:
- 广告轮播图,跟FrameLayout一样简单使用
- 基于ViewPager+FragmentPagerAdapter,滑动流畅
- 可定制图片加载器
- 提供一些定制接口
如何使用它
gradle
先在 project的build.gradle 添加:
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
然后在module的build.gradle 添加:
dependencies {
compile 'com.github.LinweiJ:BannerView:0.0.1'
}
JAVA
1.简单使用例子
- xml
<com.lwj.widget.bannerview.BannerView
android:id="@+id/BannerView"
android:layout_width="match_parent"
android:layout_height="493dp"
android:layout_weight="1"
android:background="#cdcdcd"
>
<TextView
android:id="@+id/tv_hint"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:text="提示"
/>
</com.lvchehui.www.demo_best_adapter.banner.BannerView>
- java
mTv_hint = (TextView) findViewById(R.id.tv_hint);
mBannerView = (BannerView) findViewById(R.id.BannerView);
mBannerView.setFragmentManager(getSupportFragmentManager());
mBannerView.setPictureUrl(mUrlList);
mBannerView.setCircle(true);
mBannerView.setDurationFavor(4.0f);
mBannerView.setInitItem(0);
mBannerView.setInterpolatorType(BannerInterpolator.ACCELERATE_DECELERATE);
mBannerView.setPictureLoader(new BannerPictureLoader() {
@Override
public void showPicture(Fragment fragment, ImageView pictureView, String pictureUrl) {
Glide.with(fragment)
.load(pictureUrl)
.into(pictureView);
}
});
mBannerView.setPictureClickListener(new OnBannerPictureClickListener() {
@Override
public void onPictureClick(Fragment fragment, int position, List<String> pictureUrl) {
ToastUtil.showToast(WBannerActivity.this,"position:"+position+"pictureUrl"+pictureUrl.get(position));
}
});
mBannerView.setOnBannerPageSelectedListener(new OnBannerPageSelectedListener() {
@Override
public void onPageSelected(int position, String url) {
mTv_hint.setText("position"+position+"\n"+url);
}
});
mBannerView.start();
@Override
protected void onStart() {
super.onStart();
mBannerView.startAutoPlay();
}
@Override
protected void onStop() {
super.onStop();
mBannerView.stopAutoPlay();
}
2.类/方法
- BannerView
方法 | 描述 | 备注 (是否设置) |
---|---|---|
setPictureUrl(ArrayList pictureUrl) | 图片列表 | 必须 |
setFragmentManager(FragmentManager fm) | v4.app.FragmentManager | 必须 |
setCircle(boolean isCircle) | 是否轮播 | 可选 |
setDurationFavor(float durationFavor) | 滑动动画时长因子,默认1.0F,值越大时间越长 | 可选 |
setInterpolatorType(int type) | 滑动动画变化速度类型,见BannerInterpolator[1] | 可选 |
setInitItem(int position ) | 初始页,默认0 | 可选 |
initPictureLoader(BannerPictureLoader loader) | 初始化图片加载器(只初始化一次),见BannerPictureLoader[2] | 与setPictureLoader,必须二选一 |
setPictureLoader(BannerPictureLoader loader) | 设置图片加载器,见BannerPictureLoader[2] | 与initPictureLoader ,必须二选一 |
setPictureClickListener(OnBannerPictureClickListener listener) | 设置图片点击事件,见OnBannerPictureClickListener[3] | 可选 |
addOnPageChangeListener(ViewPager.OnPageChangeListener listener) | ViewPager 滑动监听事件 | 可选 |
setOnBannerPageSelectedListener(OnBannerPageSelectedListener listener) | ViewPager 页面选中事件,见OnBannerPageSelectedListener[4] | 可选 |
start() | 配置完成后调用 | 必须 |
startAutoPlay() | 设置setCircle(ture)有效,通常在start()调用,开始轮播, | 可选 |
stopAutoPlay() | 设置setCircle(ture)有效,通常在stop()调用,停止轮播 | 可选 |
getViewPager() | 获取ViewPager | 可选 |
- BannerInterpolator[1]
常量 | 描述 |
---|---|
LINEAR | 直线 |
ACCELERATE | 在动画开始的地方速率改变比较慢,然后开始加速 |
DECELERATE | 在动画开始的地方快然后慢 |
ACCELERATE_DECELERATE | 在动画开始与介绍的地方速率改变比较慢,在中间的时候加速 |
- BannerPictureLoader[2]
方法 | 描述 | 备注 |
---|---|---|
showPicture(Fragment fragment, ImageView pictureView, String pictureUrl) | 自定义图片加载方式 | 可选Glide等图片加载库 |
- OnBannerPictureClickListener[3]
方法 | 描述 | 备注 |
---|---|---|
onPictureClick(Fragment fragment, int position, List pictureUrl) | BannerView图片点击事件,参数pictureUrl:图片列表,position:当前点击图片index |
- OnBannerPageSelectedListener[4]
方法 | 描述 | 备注 |
---|---|---|
onPageSelected(int position,String url) | BannerView滑动切换事件 | 当设置轮播时,viewPager的OnPageChangeListener不再适用 |
更多细节
可以参考 demo/ 示例
源码地址
底部
随手给颗星呗 ? (>_@)