Antwort

1

Wenn Sie zu den Quellen gehen, werden Sie PhoneWindow.class finden, die Implementierung von Window.setBackgroundDrawable Methode haben:

public void setWindowBackground(Drawable drawable) { 
    if (getBackground() != drawable) { 
     setBackgroundDrawable(drawable); 
     if (drawable != null) { 
      drawable.getPadding(mBackgroundPadding); 
     } else { 
      mBackgroundPadding.setEmpty(); 
     } 
     drawableChanged(); 
    } 
} 

Welche ist:

@Override 
public final void setBackgroundDrawable(Drawable drawable) { 
    if (drawable != mBackgroundDrawable || mBackgroundResource != 0) { 
     mBackgroundResource = 0; 
     mBackgroundDrawable = drawable; 
     if (mDecor != null) { 
      mDecor.setWindowBackground(drawable); 
     } 
     if (mBackgroundFallbackResource != 0) { 
      mDecor.setBackgroundFallback(drawable != null ? 0 : mBackgroundFallbackResource); 
     } 
    } 
} 

Wie Sie sehen können, ist es andere Methode der DecorView setWindowBackground ruft tatsächlich verwenden Methode DecorView.setBackgroundDrawable, sondern bietet auch zusätzliche Logik für Window. Also würde ich vorschlagen, dass Sie getWindow().setBackgroundDrawable() verwenden.