0

ビューに 2 つのボタンがあり、同時にその 2 つのボタンに対して OntouchListener を有効にしたい場合は、最初のボタンに触れると 1 つのタスクが開始され、最初のボタンを押したまま 2 番目のボタンに触れると別のタスクが開始されます。どうやってそれを行うのですか?助けを待っています。

4

5 に答える 5

6

複数のタッチを処理するonTouchListenerをそのビューに追加できます。

   @Override
public boolean onTouch(View v, MotionEvent event) {
    switch(event.getAction() & MotionEvent.ACTION_MASK) {

    case MotionEvent.ACTION_DOWN:
        //first finger went down
        break;

    case MotionEvent.ACTION_MOVE:
        //a touch placement has changed
        break;

    case MotionEvent.ACTION_UP:
        //first finger went up
        break;

    case MotionEvent.ACTION_CANCEL:
        //gesture aborted (I think this means the finger was dragged outside of the touchscreen)
        break;

    case MotionEvent.ACTION_POINTER_DOWN:
        //second finger (or third, or more) went down.
        break;

    case MotionEvent.ACTION_POINTER_UP:
        //second finger (or more) went up.
        break;

        default: break;
    }
    return true;
}

それぞれのケース内でボタンがクリックされているかどうかを確認してください。

于 2012-07-24T12:10:43.690 に答える
3

次のコード スニペットを試してください。

@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction() & MotionEvent.ACTION_MASK) {

case MotionEvent.ACTION_DOWN:
    //first finger went down
    break;

case MotionEvent.ACTION_MOVE:
    //a touch placement has changed
    break;

case MotionEvent.ACTION_UP:
    //first finger went up
    break;

case MotionEvent.ACTION_CANCEL:
    //gesture aborted (I think this means the finger was dragged outside of the touchscreen)
    break;

case MotionEvent.ACTION_POINTER_DOWN:
  if(mFirstButton.isPressed() && mSecondButton.isPressed())
   {// your code.}
    break;
于 2012-07-25T05:30:23.143 に答える
2

したがって、何を達成したいのかわかりませんが、次のようなものがあります。

private boolean mFirstButtonDown = false;

@Override
public boolean onTouchEvent(MotionEvent event){
    // first button onTouchEvent
    switch (event.getAction()){
       case MotionEvent.ACTION_DOWN:
                            mFirstButtonDown = true;
            break;
       case MotionEvent.ACTION_UP:
                            mFirstButtonDown = false;
            break;
    }
   ....
}

2 番目のボタンについては、ボタンがまだ保持されているかどうかを確認します。

 @Override
 public boolean onTouchEvent(MotionEvent event){
   switch (event.getAction()){
       case MotionEvent.ACTION_DOWN:
         if (mFirstButtonDown && (event.getPointerCount() > 1)) {
             // do task
     }
 }

マルチポインター (またはマルチタッチ) を使用して 2 つのボタンを同時にタッチするには、次の投稿で詳細を確認できます: Android 2.x の複数のボタンを押す

マルチポインターを理解するのに役立つもう 1 つの優れた記事は、Android 開発者に関するものです

上記のコードはテストされていません。アイデアが得られるはずです:)

于 2012-07-24T12:13:48.247 に答える
0

2 つの個別OnTouchListenerの を 2 つのボタンに追加して、ボタンのタッチ状態を の 2 つのブール値で示すか、親Activityに 1 つを追加して のポインタのタッチ座標を2 つのボタンの座標。OnTouchListenerViewMotionEvent

于 2012-07-24T12:13:25.387 に答える