Was ist der Unterschied zwischen ihnen? Soweit ich sehen kann, machen beide dasselbe.Unterschied zwischen getWindow(). SetBackgroundDrawable und getWindow(). GetDecorView(). SetBackgroundDrawable
1
A
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.