1. Wir haben diesmal 2 Gewinnspiele zeitgleich für euch - Gewinne einmal ein UMI Plus E - Beim 2ten könnt ihr ein Nomu S30 gewinnen!
  1. funcoder, 06.01.2010 #1
    funcoder

    funcoder Threadstarter Erfahrener Benutzer

    Hallo Zusammen,

    bin gerade dabei ein erstes 2D Spiel zu entwickeln via Canvas. Soweit kein Problem das einzige was ich noch lösen müsste, wäre wie ich die Fingereingaben auf dem Touchscreen abrufen kann.
    Das einzige was ich gefunden habe beeinhaltet den Sensor Listener. Dieser ist aber als deprecated in Eclipse hinterlegt.

    Nun meine Frage: Was ist die Alternative zu dem SensorListener? Und hat jemand vielleicht ein Beispiel dazu?

    Danke im Voraus

    MfG
    C0DER
     
  2. herrlado, 06.01.2010 #2
    herrlado

    herrlado Fortgeschrittenes Mitglied

    Wenn man anständig programmiert und irgendwas als deprecated markiert, gibt man an was man stattdessen nehmen sollte.
    Steht dort nichts?

     
  3. funcoder, 06.01.2010 #3
    funcoder

    funcoder Threadstarter Erfahrener Benutzer

    ok. in Eclipse selbst steht kein Hinweis. Wenn ich in der Reference bei deverloper.android.com nachschaue steht zwar ein Hinweis, dass man den SensorEventListener verwenden soll. Aber wenn ich da nach Beispielen schau bezieht sich das immer auf den Bewegungssensor und nicht auf den Touchscreen.

    Gibt es da keine Alternative damit ich die Fingerposition auf dem Touchscreen auslesen kann?
     
  4. Fr4gg0r, 06.01.2010 #4
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Hi,
    das versuch ich auch grade bekomm es aber irgendwie nicht hin :confused:

    Ich hab's nach diesem Developer Guide gemacht und onTouchEvent in meine View eingebaut:
    Code:
    public boolean onTouchEvent(MotionEvent event){
            if(event.getAction() == MotionEvent.ACTION_DOWN){
                draw((int)event.getX(), (int)event.getY(), "BLACK");
            }
            return true;
    
    draw(int, int, String) habe ich selber definiert, da passiert aber garnix beim berühren.
     
  5. Melbar, 06.01.2010 #5
    Melbar

    Melbar Android-Hilfe.de Mitglied

    Hallo,

    wenn es um normale Touchevents geht, also einfaches tippen auf den Screen, ist der View.onTouchListener der richtige siehe Handling UI Events | Android Developers

    Code:
    
    LinearLayout main  = (LinearLayout) findViewById (R.id.LinearLayout);
    ...
    main.setOnTouchListener(new OnTouchListener(){
    
                public boolean onTouch(View arg0, MotionEvent arg1) {
                    // do something
                }
                
            });
    
    Wenn es um Gesten geht gibts den GestureBuilder mit diesem kann man Gesten vorher aufzeichnen und später einfach wieder erkennen. (siehe Tutorial)

    Gruß
    Stefan
     
  6. funcoder, 06.01.2010 #6
    funcoder

    funcoder Threadstarter Erfahrener Benutzer

    Hi skrhgw,

    dein Code funktioniert einwandfrei, Danke:D

    @Fr4gg0r
    die genauen Touch Koordinaten kann man mit

    X = arg1.getX();
    Y = arg1.getY();

    innerhalb der onTouch Methodeabrufen.

    C0DER
     
  7. Fr4gg0r, 07.01.2010 #7
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Dies wäre der Weg innerhalb der Activity. Ich möchte bzw. muss es jedoch innerhalb der View definieren, und wenn ich die google Developer Seiten richtig verstanden habe, müsste das mit onTouchEvent() funktionieren.
    Nur irgendwie wird die Funktion beim Berühren des Touchscreens nicht aufgerufen.
     
  8. Melbar, 07.01.2010 #8
    Melbar

    Melbar Android-Hilfe.de Mitglied

    Hi Fr4gg0r,

    wenn du eine View abgeleitet hast dann sollte das onTouchEvent auch aufgerufen werden. Du kannst ja mal deinen Quelltext etwas mit dem Quelltext der API Demos (com.example.android.apis.view.CustomView) vergleichen dort wird die com.example.android.apis.view.LabelView verwendet die ja auch von View abgeleitet ist und wenn ich dort die Methode onTouchEvent wie folgt eingefüge und läuft es ohne Probleme.

    Code:
    @Override
    public boolean onTouchEvent(MotionEvent event) {
          // TODO Auto-generated method stub
          if(event.getAction() == MotionEvent.ACTION_DOWN){
              Log.d("ONTOUCH", "toch");
          }        
          return true;
      }
     
    Fr4gg0r bedankt sich.
  9. Fr4gg0r, 07.01.2010 #9
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Hi,
    genauso hatte ich es auch.
    Habe mich geiirt: OnTouchEvent wurde korrekt aufgerufen, ich habe jedoch invalidate() vergessen, sodass die darin enthaltenen Funktionen ihren Dienst nicht taten.
     

Diese Seite empfehlen