Warum hat setImageBitmap keine Auswirkung auf den benutzerdefinierten ImageButton?

8

Ich fand diesen Link, der angibt, wie ich das machen könnte Glow-Effekt auf meinem ImageButton . Wenn also der Benutzer ImageButton drückt, wird die Funktion onTouchEvent() aufgerufen, und dort rufe ich die Funktion setImageBitmap() auf. Das Problem ist, dass diese Funktion ( setImageBitmap() ) überhaupt keine Wirkung hat.

Was funktioniert:

1) Bisher habe ich den ImageButton wie folgt erweitert

%Vor%

Dann innerhalb der Aktivität Ich erstelle Pen (custom ImageButton ) Instanz, definiere setGlow() und rufe setImageBitmap() von der Instanz von Pen auf.

// MainActivity.java

%Vor%

Was nicht funktioniert:

1) Alles wie oben (Erweiterung eines ImageButtons in Android), aber dieses Mal rufe ich an        setImageBitmap Funktion von innen onTouchEvent (). Für diesen Fall habe ich setGlow Funktion in Pen.java

definiert %Vor%

Dann in der XML-Datei mache ich:

%Vor%

Schließlich in MainActivity

%Vor%     
pokche 25.04.2016, 23:51
quelle

3 Antworten

3

Ich habe das Projekt während des Posts erstellt, aber es funktioniert einwandfrei. Es setzt das Bitmap korrekt. Vielleicht funktioniert die getGlow () Methode nicht gut. Mache einige Logs wie folgt

%Vor%

dann überprüfen, ob die Rückkehr richtig ist.

    
zz-m 29.04.2016, 03:32
quelle
5

Ich denke, das könnte der Klassiker unter den Speicherproblemen sein. Sie können versuchen, das Bitmap des Launcher-Symbols zu verwenden, wenn Sie überprüfen möchten, ob dies zutrifft:

%Vor%

Wenn dies das Problem ist, überprüfen Sie diesen Link .

    
jobbert 03.05.2016 07:33
quelle
5

Sie können das nicht tun, weil Sie nicht genügend Arbeitsspeicher haben, wenn Sie setImageBitmap (setGlow (R.drawable.pen)) in onTouchEvent setzen.

onTouchEvent wird Servolaufzeiten pro Sekunde ausgelöst. Und Sie werden Servallipmaps im Speicher pro Sekunde erstellen. Es wird nicht genügend Speicher vorhanden sein, bevor Sie ImageBitmap erfolgreich setzen können.

    
tiny sunlight 03.05.2016 15:40
quelle