这次做一个SwitchView1,与上文的效果是一样的,但是
1.跟随手滑动使用scrollBy,
2. 松手后的弹性滑动使用scroller
需要使用下面的几个知识点:
知识点
-
系统很多控件都是使用了scrollBy+scorller来实现滑动效果的,例如ViewPager就是如此
如果你想控制ViewPager翻页的速度,可以通过反射给ViewPager设置一个自定义的Scroller,在这个自定义的Scroller里设置你想要的翻页时长(做轮播图你会用到的,Banner这是我做的一个轮播图的demo,封装的不太好)
-
scrollBy(dx,dy)增量滑动,
-
scrollTo(x,y)直接滑动到指定坐标处
-
在本例中,一个LinearLayout里有一个ImageView滑块,当你想让ImageView滑块向左侧移动时,必须想两件事,
- 谁来调用scrollBy方法
- dx,dy的正负
结论是:每次调用scrollBy,让该子控件的父容器去调用scrollBy方法,然后方向取反即可
-
scorller的使用也是固定的
第一步:初始化Scroller
mScroller = new Scroller(getContext());
第二步:调用scrollBy去让一个控件滑动
((View) mImageView.getParent()).scrollBy(-deltaX, 0);// ★这是一个普适的公式,谁要滑动,就找谁的父亲去调用scrollBy,然后方向取反
第三步:重写computeScroll方法,下面的写法也是固定的
@Override
public void computeScroll() {
super.computeScroll();
if (mScroller.computeSc