2016-04-29 6 views
0

Ich habe eine ImageView mit einem Symbol. Ich möchte dazu in der Lage sein:

. Ändern Sie das Symbol auf schweben (Bedeutung - Veränderung # 2 auf ACTION_DOWN auf das Icon aber auch Symbol # ändern zurück 1 auf ACTION_UP)
. Auslösen einer onClick Funktion (Bedeutung - Aufruf einer anderen Funktion, wenn die ImageView war geklickt)Wie unterscheidet man zwischen ACTION_UP und dem tatsächlichen Klick über den onTouchListener?

Dies ist, wie mein onTouch sieht aus wie jetzt:

@Override 
public boolean onTouch(View v, MotionEvent event) { 

    switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      // CHANGE TO IMAGE #2 
      break; 

     case MotionEvent.ACTION_UP: 
      // CHANGE TO IMAGE #1 
      break; 
    } 

    return true; 
} 

Das Problem ist - ich kann nicht wissen, wann der Benutzer drückte meine ImageView und verließ dann seinen Bereich , während immer noch gedrückt. Ich hoffe, ich habe es gut erklärt. Ich meine, dass ACTION_UP bedeutet nicht immer, dass der Benutzer beabsichtigt, klicken Sie auf der Ansicht. Wie kann ich sicher wissen, wenn die ImageViewgeklickt war und nicht nur schwebte (und immer noch in der Lage, das Symbol bei Hover zu ändern)?

+2

gut ich glaube, Sie [Selektor] (http://www.mkyong.com/android/android-imagebutton-selector-example/) für Ihr Bild – Nowshad

+0

@Nowshad Ja, toll wollen. Vielen Dank für diesen Kommentar –

+1

Wenn Sie Probleme bei der Behandlung des onclick-Ereignisses haben, versuchen Sie setOnLongClickListener.Check, wenn Sie immer noch mit dem ähnlichen Problem konfrontiert sind oder nicht. – Lampard

Antwort

1

Verwenden Sie Selector Drawable So etwas wie das.

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <!-- default --> 
    <item android:drawable="@drawable/btn_bg" android:state_focused="false" android:state_pressed="false" /> 

    <!-- button focused --> 
    <item android:drawable="@drawable/btn_bg_focus_new" android:state_focused="true" android:state_pressed="false" /> 

    <!-- button pressed --> 
    <item android:drawable="@drawable/btn_bg_focus_new" android:state_focused="false" android:state_pressed="true" /> 
</selector> 
1

Wird besser sein, wenn Sie Selektor verwenden. Sie können mehr über StateList lesen. Es gibt viele Beispiele im Internet, wie es verwendet wird.

+0

So einfach. Vielen Dank! –

Verwandte Themen