0

我想使用 SystemUiHider 活动设置来创建一个界面,其中顶部和底部菜单中的某些元素在向下滚动时隐藏。但在触摸时显示并向上滚动。

默认的 SystemUiHider 有这个方法来检测手势

// Set up the user interaction to manually show or hide the system UI.
    contentView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (TOGGLE_ON_CLICK) {
                mSystemUiHider.toggle();
            } else {
                mSystemUiHider.show();
            }
        }

        //want an onscrolldown listener
    });

我将如何修改它以检测我想要的信息类型。OnClickListener 可以检测滚动吗?或者我是否需要一种不同类型的监听器或实现自定义手势。

4

2 回答 2

2

LarsWerkman QuickReturnListView 开源项目似乎符合您的期望。将其包含在您的项目中,以查看它是否满足您的要求,或者了解它们如何实施和定制以满足您的需求。

https://github.com/LarsWerkman/QuickReturnListView

于 2013-07-03T17:10:02.027 回答
1

我不确定我是否理解正确。但是,我猜您正在寻找手势检测。在这种情况下,为其设置 onTouchListener 并覆盖 onTouchListener

@Override
public boolean onTouch(View v, MotionEvent event) {

    switch (event.getAction())
    {
    case MotionEvent.ACTION_DOWN:
    {
        canHandleMove=true;
        lastY = touchevent.getY();
        Log.d("tag", "touch down at "+lastX);
        break;
    }

    case MotionEvent.ACTION_UP:
    case MotionEvent.ACTION_MOVE:
    {
        if(canHandleMove)
        {
        canHandleMove=false;
        float currentY = event.getY();
        Log.d("tag", "touch up at "+currentY);

        float diff=((lastY<currentY)?(currentY-lastY):(lastY-currentY));
        if(diff>10)
        {
        if (lastY < currentY)
        {
            // Move Up
        }
        if (lastY > currentY)
        {
            // Move Down
        }
        }
        break;
        }
    }
    }
    return true;
}
于 2013-07-08T10:41:39.280 回答