systemuihider隐藏在滚动上

时间:2013-06-27 16:53:28

标签: android gesture onclicklistener ontouchlistener onscroll

我想使用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可以检测滚动吗?或者我是否需要使用其他类型的监听器或自定义手势。

2 个答案:

答案 0 :(得分:2)

LarsWerkman QuickReturnListView开源项目似乎正在做你所希望的。将您的项目包括在内,以确定它是否符合您的要求,或者根据您的需求实施和定制。

https://github.com/LarsWerkman/QuickReturnListView

答案 1 :(得分: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;
}