根据 Romain Guy 的博客文章Android 性能案例研究,在谈到 Overdraw 时,他说:
删除窗口背景:在您的主题中定义的背景被系统用于在启动您的应用程序时创建预览窗口。除非您的应用程序是透明的,否则切勿将其设置为 null。相反,将其设置为您想要的颜色/图像,或者通过调用 getWindow().setBackgroundDrawable(null) 从 onCreate() 中删除。***
但是 getWindow().setBackgroundDrawable(null) 似乎没有效果。这是带有代码的示例:
//MainActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
getWindow().setBackgroundDrawable(null);
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
// main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="40dp"
android:layout_marginRight="40dp"
android:background="#FFE0FFE0"
tools:context=".MainActivity" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="40dp"
android:layout_marginRight="40dp"
android:background="#FFFFFFE0" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:text="@string/hello_world" />
</LinearLayout>
// styles.xml
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:windowBackground">@color/yellow</item>
</style>
此示例在图像中生成结果。您可以看到外层有一个过度绘制,并且窗口背景颜色仍然可见。我希望窗口的背景消失,只有线性布局有透支。