2012-05-07 11 views
0

私はその中にコントローラと呼ばれるレイアウトを持っています。私はカップルのボタンなどを持っています 問題は私のonTouch関数にあります。これは2回のタッチ後に機能します。最初のタッチはコントローラを表示し、次のタッチはコントローラを消すことになっています。 1回目と2回目のタッチは何もしませんが、3回目のタッチでは動作します。これに関連する関数は次のとおりですsetVisibilty()は初めて動作しません

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(); 
} 

誰でも問題の可能性はありますか?私は今このコードを数日間見ていて、それが何であるかを見ることはできません。

+1

これはJavaかAndroidですか?そうであれば、それをタグ付けすると参考になるかもしれません。 –

+0

これはなんですか? Java? Android用ですか?言語やその他の関連タグを追加すれば、人々があなたを助けることができるかもしれません。 – MilkyWayJoe

+0

android – Raigex

答えて

0

このコードについていくつかのポインタ:

  • isLifted変数は、おそらく偽を開始し、最初のタッチイベントにそれがダウンイベントで発生することは何も生じません。ユーザーが指を持ち上げると、変数がtrueに設定され、2番目のイベントが実際に処理されるようになります。つまり、最初のタッチでは目に見える効果はありません。
  • コンポーネント自体の可視性をチェックするのではなく、isVisibleブール値を使用しています。これにより、それらを同期させるのが非常に簡単になります。

完全なクラスがなければ、わかりにくいですが、私はこれらの点を調査します。

+0

isLifted変数が真で始まるので問題はありませんでした。もう1つはだった。可視性は同期していなかったと思います。私はgetVisibilty == View.Goneに変更しました。 – Raigex

0

xmlをデザインしている間、ウィジェットはandroid:visibility="gone"になります。プログラム中に隠れたオンクリックがView.VISIBLEに設定されていて、2番目のタッチで表示されている場合はView.GONEの状態がチェックされます。

これはうまくいくと思います。一度試してみてください。

関連する問題