这次我们来学习一下日常看到的广告轮播器,几乎每个App
中都拥有这样的控件。这种使用频繁的控件,我们应该懂得它们的实现原理,这样我们在使用的工程中就能更加熟练与轻松。先来看下效果吧。
效果图
原理
其实这个控件的实现本质就是一个ViewPager
,相信大家对ViewPager
不会很陌生,例如ViewPager
+Fragment
实现新闻的界面。首先我们要明确我们所要的需求,我们要实现ViewPager
滑动切换画面,同时最重要的是它自己能循环切换。好了,下面我来简要的解释下核心的实现。
初始化
要实现一个轮播控件,所以我们首先要自定义LoopView
控件,设置相关布局文件,与初始化一些比较的事件,例如绑定控件、设置监听与获取自定义属性值。这里布局我就不多说了,可以自行查看。
public void init(Context context) {
LayoutInflater.from(context).inflate(R.layout.loopview_layout, this, true);
viewPager = (ViewPager) findViewById(R.id.loopView);
linearCircler = (LinearLayout) findViewById(R.id.linear_circler);
linearCirclerNo = (LinearLayout) findViewById(R.id.linear_circler_no);
descript = (TextView) findViewById(R.id.descript);
viewPager.addOnPageChangeListener(this);
viewPager.setOnTouchListener(this);
}
这是一些必要的布局填充与监听绑定,同时我这里自定义了属性,所以也要获取
public LoopView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
TypedArray typedArray = getContext().obtainStyledAttributes(attrs,