正常ScrollView的滑動方式是,手指上滑數據向下滾動,手指下滑數據向上滾動;
然後現在有個需求,手指的滑動要跟電腦鼠標滾輪一樣,上劃就向上滾動到頂,下劃滾動到底。
測試代碼如下:滑動幅度可以修改scale,ll_content就是scrollview的子佈局
private int lastX;
private int lastY;
/**
* 測試滾動反向
*/
@SuppressLint("ClickableViewAccessibility")
private void testScorllReverse(){
final ScrollView scrollView = (ScrollView) findViewById(R.id.scrollview_main);
LinearLayout llContent = (LinearLayout) findViewById(R.id.ll_content);
llContent.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
//屏蔽父控件攔截onTouch事件
v.getParent().requestDisallowInterceptTouchEvent(true);
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
lastX = (int) event.getRawX();
lastY = (int) event.getRawY();
break;
case MotionEvent.ACTION_MOVE:
int dx =(int)event.getRawX() - lastX;
int dy =(int)event.getRawY() - lastY;
if(dy > 0){//手指向下滑動
}else{//手指向上滑動
}
float scale = 0.25f;
scrollView.smoothScrollBy(0, (int) (dy*scale));
break;
default:
break;
}
return true;
}
});
}