2013-08-07 2 views
7

Könnte mir jemand sagen, was ist der Unterschied zwischen setBackgroundResource(resourceid) und setBackgroundDrawable(getResource().getDrawable(drawableid)) in Android?Was ist der Unterschied zwischen setBackgroundResource und setBackgroundDrawable

+0

Die beiden Linien, die Sie zur Verfügung gestellt - keinen Unterschied. Beachten Sie jedoch, dass 'setBackgroundDrawable' nicht aus Ressourcen gezogen werden muss - es kann ein Bild sein, das aus dem Internet heruntergeladen wurde, oder ein Bitmap, das im laufenden Betrieb erstellt wurde. –

+0

aber wenn ich eine Schaltfläche deaktiviert und dann aktiviert, die graue Farbe auf die Schaltfläche nicht entfernen (hier zuerst ich setBackgroundResource für die Einstellung Hintergrund wieder ausziehbar, aber es zeigt keinen Unterschied, und dann habe ich SetBackgroundDrawable dann die Schaltfläche Hintergrund geändert zu tatsächlich zeichnbar). Warum beide Methoden unterschiedliches Verhalten zeigen, wenn sie keinen Unterschied machen. –

+0

Könnten Sie einen Code schreiben, der das Problem demonstriert? –

Antwort

7

Sie können sich die selbst ansehen und feststellen, dass es kaum Unterschiede gibt!

public void setBackgroundResource(int resid) { 
    if (resid != 0 && resid == mBackgroundResource) { 
     return; 
    } 

    Drawable d= null; 
    if (resid != 0) { 
     d = mResources.getDrawable(resid); 
    } 
    setBackground(d); 

    mBackgroundResource = resid; 
} 

Und setBackground() nur Anrufe durch setBackgroundDrawable() ...

public void setBackground(Drawable background) { 
    //noinspection deprecation 
    setBackgroundDrawable(background); 
} 
+0

Direkt aus dem Mund des Droiden. – samosaris