SensorListener - Alternative?

F

funcoder

Fortgeschrittenes Mitglied
39
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
 
Wenn man anständig programmiert und irgendwas als deprecated markiert, gibt man an was man stattdessen nehmen sollte.
Steht dort nichts?

C0DER schrieb:
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
 
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?
 
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.
 
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
 
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
 
skrhgw schrieb:
Hallo,

Code:
LinearLayout main  = (LinearLayout) findViewById (R.id.LinearLayout);
...
main.setOnTouchListener(new OnTouchListener(){

            public boolean onTouch(View arg0, MotionEvent arg1) {
                // do something
            }
            
        });

Gruß
Stefan

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.
 
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;
  }
 
  • Danke
Reaktionen: Fr4gg0r
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.
 

Ähnliche Themen

E
Antworten
4
Aufrufe
1.222
enrem
E
Railwanderer
  • Railwanderer
Antworten
4
Aufrufe
1.379
Railwanderer
Railwanderer
J
Antworten
3
Aufrufe
764
swa00
swa00
Zurück
Oben Unten