自定义控件-ViewPager广告板轮播
Posted wangziqiang123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自定义控件-ViewPager广告板轮播相关的知识,希望对你有一定的参考价值。
GitHub
Gradle
compile 'com.march.billboardview:billboardview:2.0.6-beta4'
xml 里面使用
1 2 3 4 5 6 7 8 9 10 11 12 13
| xml 里面使用 <com.march.billboardview.BillBoardView android:id="@+id/billboard" android:layout_width="match_parent" android:layout_height="250dp" board:isAutoRun="true" board:isLoopIt="true" board:intervalTime="2000" />
属性: isAutoRun:是不是自动播放,不需要滑动,默认true isLoopIt:是不是无限循环播放,默认是true intervalTime:播放间隔时间,每隔多长时间走一页
|
构建实体
1 2
| public class implements BoardConfig
|
定义加载工具
1 2 3 4 5 6 7
| //初始化图片加载的工具,你可以自定义使用Picasso还是Glide等图片加载库加载 BillBoard.init(new BillBoard.BillLoadImg() @Override public void loadImg(Context context, String title, String url, ImageView imageView) imageView.setImageResource(Integer.parseInt(url)); );
|
使用SimpleBoardAdapter
1 2 3 4
| private BillBoardView billBoardView; private SimpleBoardAdapter<Demo> mBoardAdapter; mBoardAdapter = new SimpleBoardAdapter<>(getActivity(), demos); billBoardView.setAdapter(mBoardAdapter);
|
配置BillBoardView
1 2 3 4 5 6 7 8 9
| billBoardView .setAdapter(mBoardAdapter) .setSwipeRefreshLayout(sw) .click(new OnBoardClickListener() @Override public void clickBillBoard(int pos, BoardConfig b) Log.e("chendong", "click pos " + pos + " title is " + b.getTitle()); ).show();
|
数据更新
1
| mBoardAdapter.notifyDataSetChanged(demos);
|
开放停止和开始播放的方法
1 2
| public void startPlay() public void stopPlay()
|
SwipeRefreshLayout冲突
- 当与SwipeRefreshLayout嵌套使用时,解决SwipeRefreshLayout冲突
1
| public void setSwipeRefreshLayout(SwipeRefreshLayout sw)
|
轮播动画和时间
1 2
| public BillBoardView setAnimation(int duration, Interpolator interpolator)
|
插值器 |
描述 |
new AccelerateInterpolator() |
开始慢后面加速,由于距离较近效果不明显,有点像是匀速 |
new AccelerateDecelerateInterpolator() |
两头速度慢,中间加速,由于距离较近效果不明显,有点像是匀速 |
new DecelerateInterpolator() |
开始快后面慢,由于距离较近效果不明显,有点像是匀速 |
new BounceInterpolator() |
到达末尾跳跃弹起 |
new AnticipateInterpolator() |
先甩一下在移动 |
new AnticipateOvershootInterpolator() |
先甩一下到达终点后过界在后退 |
new OvershootInterpolator() |
过界后返回 |
new LinearInterpolator() |
常量变速 |
new LinearOutSlowInInterpolator() |
开始快后面慢 |
其他API
1 2 3 4 5
|
public void setOnBoardPageChangeListener(OnPageChangeListener onPageChangeListener)
public ViewPager getViewPager()
|
BoardAdapter
1 2 3 4 5 6 7 8
| protected Context mContext; protected int mLyRes; protected int preIndex = -1; protected List<B> datas; protected boolean isLoop; protected View mRootView; protected BillBoardView mBoardView;
|
基于SimpleBoardAdapter
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
public TextView getTitleView()
public ViewGroup getBotLy()
public LinearLayout getGuideLy()
public void setSelectRes(int selectRes, int unSelectRes)
public void setTitleGravity(int gravity)
public void setGuideLyGravity(int gravity)
|
如何自定义Adapter
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| public class MyAdapter extends BoardAdapter<>
public MyAdapter(Context mContext, List<Demo> datas) super(mContext, datas);
protected int getLayoutId() return 0;
protected void initAdapterViews()
public void changeItemDisplay(int pos, Demo demo)
public void onBillBoardViewAttached(BillBoardView billBoardView) super.onBillBoardViewAttached(billBoardView);
|
优化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| protected void onResume() super.onResume(); if(billBoardView!=null) billBoardView.startPlay();
@Override protected void onDestroy() super.onDestroy(); billBoardView.stopPlay();
@Override protected void onPause() super.onPause(); billBoardView.stopPlay();
|
原文:大专栏 自定义控件-ViewPager广告板轮播
以上是关于自定义控件-ViewPager广告板轮播的主要内容,如果未能解决你的问题,请参考以下文章
CycleRotationView:自定义控件之轮播图
Qt编写自定义控件23-广告轮播控件
Android实现ViewPager自动轮播
Android实现ViewPager自动轮播
viewgager
Android自定义控件6--轮播图广告的实现