如何在android ScrollView xml中为每个滚动滚动滚动一定数量的值

如何在android ScrollView xml中为每个滚动滚动滚动一定数量的值,android,Android,我尝试建立scrollView,用户每次轻弹它时,它都可以滚动一定距离。或者换句话说,它可以每次滚动几个块。它类似于安卓手机2.3的菜单 有什么想法吗?如果你能给我看一下示例代码。非常感谢您的帮助从eclip的高级版面中选择滚动视图 <ScrollView android:id="@+id/scrol`<ScrollView android:id="@+id/scrollView1" android:layout_width="wrap

我尝试建立scrollView,用户每次轻弹它时,它都可以滚动一定距离。或者换句话说,它可以每次滚动几个块。它类似于安卓手机2.3的菜单
有什么想法吗?如果你能给我看一下示例代码。非常感谢您的帮助

从eclip的高级版面中选择滚动视图

<ScrollView
        android:id="@+id/scrol`<ScrollView
        android:id="@+id/scrollView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" >

        <LinearLayout
            android:id="@+id/linearLayout1"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
        </LinearLayout>
    </ScrollView>`lView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" >

        <LinearLayout
            android:id="@+id/linearLayout1"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
        </LinearLayout>
</ScrollView>

用于扩展简单手势监听器。我的代码大致粘贴在这里。这只是为了对此有所了解。我在创建水平滚动视图时已经这样做了

setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {

        if (mGestureDetector.onTouchEvent(event)) {
            return true;
        } else if (event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL) {
            int scrollX = getScrollX();
            int featureWidth = v.getMeasuredWidth();
            mActiveFeature = ((scrollX + (featureWidth/2))/featureWidth);
            int scrollTo = mActiveFeature*featureWidth;
            smoothScrollTo(scrollTo, 0);
            return true;
        } else {
              return false;
        }
    }
}
简单手势听者:

class MyGestureDetector extends SimpleOnGestureListener {
    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
        try {
            if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
                int featureWidth = getMeasuredWidth();
                mActiveFeature = (mActiveFeature < (mItems.size() - 1))? mActiveFeature + 1:mItems.size() -1;
                smoothScrollTo(mActiveFeature*featureWidth, 0);
                return true;
            } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
                int featureWidth = getMeasuredWidth();
                mActiveFeature = (mActiveFeature > 0)? mActiveFeature - 1:0;
                smoothScrollTo(mActiveFeature*featureWidth, 0);
                return true;
            }
        } catch (Exception e) {
            Log.e("Fling", "There was an error processing the Fling event:" + e.getMessage());
        }

        return false;
    }
}
类MyGestureDetector扩展了SimpleGestureListener{
@凌驾
公共布尔onFling(MotionEvent e1、MotionEvent e2、float-velocityX、float-velocityY){
试一试{
if(e1.getX()-e2.getX()>滑动最小距离和&Math.abs(速度x)>滑动阈值速度){
int featureWidth=getMeasuredWidth();
mActiveFeature=(mActiveFeature<(mItems.size()-1))?mActiveFeature+1:mItems.size()-1;
smoothScrollTo(mActiveFeature*featureWidth,0);
返回true;
}else if(e2.getX()-e1.getX()>swip\u MIN\u DISTANCE&&Math.abs(velocityX)>swip\u THRESHOLD\u VELOCITY){
int featureWidth=getMeasuredWidth();
mActiveFeature=(mActiveFeature>0)?mActiveFeature-1:0;
smoothScrollTo(mActiveFeature*featureWidth,0);
返回true;
}
}捕获(例外e){
Log.e(“Fling”,“处理Fling事件时出错:”+e.getMessage());
}
返回false;
}
}