0

我有一个称为控制器的布局,其中有几个按钮,问题出在我的 onTouch 功能中,我想一键显示它并隐藏它。现在这在 2 次触摸后起作用。第一次触摸应该显示控制器,而下一次应该使它消失。第一次和第二次触摸什么都不做,但在第三次触摸时它起作用。这是相关的功能

public boolean onTouchEvent(MotionEvent event)
{

    int eventx = event.getAction();
    switch(eventx)
    {
    case MotionEvent.ACTION_DOWN:
        if(isLifted)
        {
            if(!isVisible)
            {
                Log.i("onTouch", "called showPuse menu");
                isVisible = true;
                isPaused = true;
                showPauseMenu();
            }
            else if(isVisible)
            {
                hidePauseMenu();
                isVisible= false;
            }
            isLifted = false;

        }
        break;
    case MotionEvent.ACTION_UP:
        if(!isLifted)
        {
            isLifted = true;
            //Log.i("onTouchEvent", "Lifted");
        }
    }
    return false;
}

    /***************************************************
 * Shows All Views needed to be shown
 * Also pauses video and audio
 *
 * *************************************************/
private void showPauseMenu()
{
    Log.i("showPauseMenu", "called");
    playButton.setVisibility(View.VISIBLE);
    Log.i("showPauseMenu", "plaButton visible");
    bottomButtons.setVisibility(View.VISIBLE);
    Log.i("showPauseMenu", "bottom Menu showed");
    playButton.invalidate();
    bottomButtons.invalidate();
    pauseMedia();
}
/************************************************
 * Hides Views that are part of Pause Menu
 * Also starts video and audio back again
 */
private void hidePauseMenu() {
    playButton.setVisibility(View.GONE);
    bottomButtons.setVisibility(View.GONE);
    playMedia();
}

谁能说可能是什么问题?我已经看这段代码几天了,看不出它可能是什么。

4

2 回答 2

0

关于此代码的一些提示:

  • isLifted 变量可能一开始就为假,并且在第一次触摸事件时,它不会导致向下事件发生任何事情。当用户抬起他/她的手指时,该变量设置为 true,因此可以实际处理第二个事件。这意味着第一次触摸永远不会有任何可见的效果。
  • 您正在使用 isVisible 布尔值,而不仅仅是检查组件本身的可见性。这使得它们很容易不同步。

没有全班就很难说,但我会调查这两点。

于 2012-05-07T21:24:21.810 回答
0

在设计 xml 时制作小部件android:visibility="gone"。在程序期间检查状态是否隐藏 onclick 设置View.VISIBLE以及是否在第二次触摸时可见View.GONE

我认为这会奏效。试一次。

于 2012-05-08T08:08:34.317 回答