多个ScrollView或者Listview多级联动效果!!拒绝 直接使用 ScrollTo ScrollBy,使listview、scrollView滚动

昨天开发,遇到一个棘手的问题,就是需要多个ScroollView能达到联动的效果,不是把view放到一个ScrollView就能解决的,需要将view拆分到不同的ScrooView中,然后对某个ScrollView操作,实现两个或者多个ScrollView同时滚动,给人的感觉是在一个ScrollView上的效果一样的!! 
 

例如图上效果:

多个ScrollView或者Listview多级联动效果!!拒绝 直接使用 ScrollTo ScrollBy,使listview、scrollView滚动_第1张图片

多个ScrollView或者Listview多级联动效果!!拒绝 直接使用 ScrollTo ScrollBy,使listview、scrollView滚动_第2张图片

第一排是能自由左右移动的ScrollView,第二行是自由移动的ScrollView,但是呢 需求是移动第二个ScrollView需要我们同时第一个ScrollView同步移动!怎么做呢,上代码:

第一:写个接口ScrollViewListener!!

public interface ScrollViewListener {    
void onScrollChanged(MyScrollView scrollView, int x, int y, int oldx, int oldy);
}
第二:

重写 HorizontalScrollview(或者ScrollView)

public class MyScrollView extends  HorizontalScrollViewrollView {

	private ScrollViewListener scrollViewListener = null;

	public MyScrollView(Context context) {
		super(context);
	}

	public MyScrollView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
	}

	public MyScrollView(Context context, AttributeSet attrs) {
		super(context, attrs);
	}

	public void setScrollViewListener(ScrollViewListener scrollViewListener) {
		this.scrollViewListener = scrollViewListener;
	}

	protected void onScrollChanged(int x, int y, int oldx, int oldy) {
		super.onScrollChanged(x, y, oldx, oldy);
		if (scrollViewListener != null) {
			scrollViewListener.onScrollChanged(this, x, y, oldx, oldy);
		}
	}
}

第三步:

某个Activity 实现接口,并实现onScrollChanged方法,

public class  TestActivity  implements  ScrollViewListener   

实例化你的Scrollview , 然后 注册监听器:

myscrollview = (MyScrollView) findViewById(R.id.scrollview_score_vertical);
myscrollview.setScrollViewListener(this);

接口方法实现:

public void onScrollChanged(MyScrollView scrollView, int x, int y,
int oldx, int oldy) {
if (scrollView == myscrollview ) {
myscrollview .scrollTo(x, y);  // 这里是拖动myscrollview 实现scrollview滚动
你的scrollview(或者listivew).scrollTo(x, y);// 这里写 需要跟myscrollview同步滚动的scrollview或者listview即可!
}
}

这样你的listview或者scrollview就能同步滚动了!!

你可能感兴趣的:(多个ScrollView或者Listview多级联动效果!!拒绝 直接使用 ScrollTo ScrollBy,使listview、scrollView滚动)