2016-04-06 9 views
0

Wie kann ich Touch-Ereignis unterschiedlicher Ansicht in Single-Touch erhalten, wie Sie in Bild unten sehen können.Wie erhalten Touch-Ereignis für andere Ansicht in Single-Touch in Android?

hatte ich mit

private void showAlert() { 
    dialog = new Dialog(this); 
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    dialog.setContentView(R.layout.temp_view); 
    Button btnOne = (Button) dialog.findViewById(R.id.btnOne); 
    Button btnTwo = (Button) dialog.findViewById(R.id.btnTwo); 
    Button btnThree = (Button) dialog.findViewById(R.id.btnThree); 
    btnTwo.setFocusableInTouchMode(true); 
    btnTwo.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      switch (event.getAction()) { 
       case MotionEvent.ACTION_DOWN: 
        Log.e("Down", ">>>>>>>>>>>>>button Two Down <<<<<<<<<<<<<<<"); 
        break; 
       case MotionEvent.ACTION_UP: 
        Log.e("Down", ">>>>>>>>>>>>>button Two UP <<<<<<<<<<<<<<<"); 
        break; 
      } 
      return false; 
     } 
    }); 
    btnThree.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 

      switch (event.getAction()) { 
       case MotionEvent.ACTION_DOWN: 
        Log.e("Down", ">>>>>>>>>>>>>button 3 Down <<<<<<<<<<<<<<<"); 
        break; 
       case MotionEvent.ACTION_UP: 
        Log.e("Down", ">>>>>>>>>>>>>button 3 UP <<<<<<<<<<<<<<<"); 
        break; 
      } 
      return false; 
     } 
    }); 

    btnOne.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 

      switch (event.getAction()) { 
       case MotionEvent.ACTION_DOWN: 
        Log.e("Down", ">>>>>>>>>>>>>button One Down <<<<<<<<<<<<<<<"); 
        break; 
       case MotionEvent.ACTION_UP: 
        Log.e("Down", ">>>>>>>>>>>>>button One UP <<<<<<<<<<<<<<<"); 
        break; 
      } 
      return false; 
     } 
    }); 

    btnOne.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Toast.makeText(TempTwitterTimelineActivity.this, "One", Toast.LENGTH_SHORT).show(); 
     } 
    }); 
    View v = dialog.getCurrentFocus(); 
    if (v != null) 
     switch (v.getId()) { 
      case R.id.btnOne: 
       Toast.makeText(TempTwitterTimelineActivity.this, "One", Toast.LENGTH_SHORT).show(); 
       break; 
      case R.id.btnTwo: 
       Toast.makeText(TempTwitterTimelineActivity.this, "Two", Toast.LENGTH_SHORT).show(); 
       break; 
      case R.id.btnThree: 
       Toast.makeText(TempTwitterTimelineActivity.this, "Three", Toast.LENGTH_SHORT).show(); 
       break; 


     } 
    dialog.show(); 
} 

versuchen, aber es funktioniert nur, wenn ich eine andere Taste erneut berühren.

Here you can see three different view event is fire in single touch, you can also check it in instagram search screen

Ich habe eine Aktivität mit Knopf, einen benutzerdefinierten Dialog auf Tastendruck-Ereignis, in benutzerdefinierten Dialog Öffnen Ich habe drei Schaltfläche Wie, Teilen und anzeigen I mit Knopf dh Benutzer-Profile anzeigen Funktion Associate nennen möchte aber andere zweite Berührung, als wenn MotionEvent.ACTION_UP: Feuer ist Ich beende den Dialog.

ist hier Öffnen-Dialog Code

txtTemp.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      switch (event.getAction()) { 
       case MotionEvent.ACTION_UP: 
        if (dialog != null) { 
         if (dialog.isShowing()) { 
          dialog.dismiss(); 
         } 
        } 
        break; 
      } 
      return false; 
     } 
    }); 

für bekommen hier klare Vorstellung ist zweite Bild, wo ich zeigen, berührt von Entwickler Option aktivieren und Screenshots.

Single Touch Multiple action fire without up fingure

+0

Bitte erklären, was das Problem ein bisschen mehr ist. Ich lese deine Frage, ich weiß nicht, was du zu lösen versuchst. – CaptJak

+0

Ich habe mehr Informationen und Code in Frage hinzugefügt, ich möchte Funktionalität wie in Instagram Suchbildschirm implementieren, wenn eine lange Berührung in der Suchergebnis zu dieser Zeit Ansicht ist offen, dass Art der Ansicht möchte ich machen. –

+0

Ich verstehe immer noch nicht, was Sie tun möchten. Möchten Sie eine Methode aufrufen, wenn eine der drei Schaltflächen berührt wird? – CaptJak

Antwort

0

Ich habe eine kühle Bibliothek, in dem Entwickler peekAndPop Ansicht machen, dass mein Problem lösen.

Unten ist URL.

https://android-arsenal.com/details/1/3359

Dank Vincent Te Tau

+0

Können Sie erklären, wie Sie diese Bibliothek mit RecyclerView mit Grid Layout verwenden, es wird keine Dokumentation oder ein Beispiel zur Verfügung gestellt. Ich möchte ein Feature wie Instagram Peek & Pop implementieren. –

+1

Es ist sehr einfach, ich denke, Sie erstellen RecyclerView.Adater auf Adapter-Konstruktor müssen Sie peekandpopview aufrufen –