0

コントローラーと呼ばれるレイアウトがあり、いくつかのボタンがあり、そのような問題は onTouch 関数にあります。1 回のクリックで表示し、別のクリックで非表示にしたいです。これで 2 回のタッチで機能するようになりました。最初のタッチでコントローラーが表示され、次のタッチでコントローラーが消えるはずです。1 回目と 2 回目のタッチは何もしませんが、3 回目のタッチでは機能します。これに関連する関数は次のとおりです

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変数はおそらくfalseで始まり、最初のタッチイベントでは、ダウンイベントでは何も起こりません。ユーザーが指を離すと、変数がtrueに設定されるため、2番目のイベントを実際に処理できます。これは、最初のタッチが目に見える効果をもたらすことは決してないことを意味します。
  • コンポーネント自体の可視性をチェックするだけでなく、isVisibleブール値を使用しています。これにより、それらを同期から外すのが非常に簡単になります。

フルクラスがないとわかりにくいですが、両方の点を調べてみます。

于 2012-05-07T21:24:21.810 に答える
0

xml の設計中にウィジェットを作成しますandroid:visibility="gone"。プログラム中に、非表示の onclick が設定されているView.VISIBLEかどうか、および 2 回目の touch で表示されるかどうかを確認しますView.GONE

これでうまくいくと思います。一度お試しください。

于 2012-05-08T08:08:34.317 に答える