1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  1. BFK, 25.03.2012 #1
    BFK

    BFK Threadstarter Erfahrener Benutzer

    Hallo,
    Habe folgendes Problem..:

    Ich erstelle via Code ein View, dass als Button fungieren soll.

    Wenn der User dieses View anklickt, soll sich die HintergrundFarbe ändern.
    Das mache ich so..:

    Code:
    MyView.setOnTouchListener(new View.OnTouchListener() {
                        
                        @Override 
                        public boolean onTouch(View arg0, MotionEvent event) {
                            if(event.getAction() == MotionEvent.ACTION_DOWN )
                            {
                                MyView.setPolygonColor(COLOR_ORANGE);
                                MyView.invalidate();    
                            }
                            else if(event.getAction() == MotionEvent.ACTION_UP)
                            {
                                MyView.setPolygonColor(COLOR_BLUE);
                                MyView.invalidate();
                            }
                                return false;
                        }
                    });
    
    Das ganze funktioniert gut, nur wenn der User das View anklickt (ACTION_DOWN) und seinen Finger ausserhalb des Views bewegt (also ACTION_MOVE) und dann sein Finger vom Touchscreen wegnimmt, wird ja ACTION_UP nicht aufgerufen und so bleibt das View mit der orangenen Farbe.

    Wie kann ich den testen ob der User mit seinem Finger das View verlässt..???

    So könnte ich die Farbe auf blau wiederzurücksetzen, die auch die Anfangsfarbe ist.
     
  2. Unicate, 26.03.2012 #2
    Unicate

    Unicate Android-Experte

    Was du suchst ist, wie man eigene Custom Buttons erstellt.

    Das macht man aber nicht mit dem ändern der Hintergrundfarbe. Das ist einfacher. Man erstellt 2-4 Buttons, teilt einer xml-datei mit welche der 2-4 Buttons für welchen Case stehen (normal, gedrückt usw.). und dann kann man den style jeden android button geben und er wird so aussehen und auch so reagieren.

    Schau mal hier. Ansonsten such bei Google mal nach "android custom button"
     
  3. BFK, 26.03.2012 #3
    BFK

    BFK Threadstarter Erfahrener Benutzer

    Hi Unicate und danke dir für deine Antwort.

    Aber NEIN ich suche nicht wie man Custom Buttons erstellt, das weiss ich nämlich schon.
    In diesem Fall kann ich aber kein eigenen Button benutzen, da es sich um ein View handelt, dass nicht immer gleich ist. (von der grösse und von der Form und von dem darauf angezeigten Inhalt)
    Deshalb wollte ich nur kurz die Farbe des Views ändern, wenn der Nutzer draufklickt.
     
  4. Tom299, 27.03.2012 #4
    Tom299

    Tom299 Android-Experte

    Bei Action_Move bekommt man doch sicherlich die Koordinaten vom Touch und wie groß deine View ist kannst du sicher auch rausfinden. Und dann zu prüfen wann der Finger den View verläßt sollte doch nicht so schwer sein, oder versteh ich jetzt was falsch?
     
  5. BFK, 27.03.2012 #5
    BFK

    BFK Threadstarter Erfahrener Benutzer

    Hi,
    du hast recht.
    Bei ACTION_MOVE bekomme ich die Koordinaten und klar ich weiss wie gross mein View ist. Aber wenn ich das View mit dem Finger verlasse, dann bekomme ich keine Koordianten mehr, da ich ja die Koordinaten nur vom View selbst bekomme.
    Also ich kann zum Beispiel nicht checken ob sich ein Punkt jetzt ausserhalb des Views befindet oder innerhalb.
    Das funktioniert nur wenn ich ein extra onTouchListener erstelle, und zwar vom ganzen Display und sobald der User das View antouched, aktiviert sich auch der onTouchListener des ganzen Displays. Aber diese Lösung finde ich nicht besonders elegant.
    Es sei denn du meintest was anderes und ich habe es nicht richtig mitgekriegt...wenn dann bitte korrigieren.

    Eine andere Lösung wär dann auch einen Timer zu erstellen, der automatisch die Farbe zurücksetzt wenn ACTION_UP nicht aktiviert wurde.
    Aber diese Lösung finde ich noch schlechter als die vorrige.

    Aber eigentlich müsste doch was einfacheres geben. Ich meine ok die version per xml mit den verschiedenen states sollte doch auch programmierbar machbar sein oder etwa nicht..?
     
  6. Tom299, 27.03.2012 #6
    Tom299

    Tom299 Android-Experte

    BFK gefällt das.
  7. BFK, 27.03.2012 #7
    BFK

    BFK Threadstarter Erfahrener Benutzer

    Hey danke, es war ACTION_CANCEL.

    Also mit...
    Code:
    else if(event.getAction() == MotionEvent.ACTION_CANCEL)
                            {
                                TrackView[count].setPolygonColor(COLOR_BLUE);
                                TrackView[count].invalidate();
                            }
    
    wird alles wieder zurückgesetzt.
     
  8. Tom299, 27.03.2012 #8
    Tom299

    Tom299 Android-Experte

    :thumbsup:
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[ERLEDIGT] Bei Klick auf Imagebutton das Bild darin ändern Android App Entwicklung 12.08.2017
[OFFEN] App Beschreibung im Store nachträglich ändern Android App Entwicklung 20.04.2017
[ERLEDIGT] Font Color in einem ChangeLog für 1 Wort ändern Android App Entwicklung 19.03.2017
[ERLEDIGT] Hintergrundfarbe einer app ändern Android App Entwicklung 18.03.2017
[ERLEDIGT] Buttontext per klick ändern Android App Entwicklung 14.03.2017
AsyncTask ProgressDialog ändern Android App Entwicklung 21.02.2017
Farben ändern und permanent speichern Android App Entwicklung 19.01.2017
Button Titel bei Klick ändern Android App Entwicklung 17.01.2017
Drawerlist Markierter Einträg ändern Android App Entwicklung 17.11.2016
Du betrachtest das Thema "Bei onTouch Hintergrundfarbe ändern" im Forum "Android App Entwicklung",