gpt4 book ai didi

android - Overdraw 和 Romain Guy 的博文 Android 性能案例研究

转载 作者:可可西里 更新时间:2023-11-01 19:00:37 27 4
gpt4 key购买 nike

基于 Romain Guy 的博客文章 Android Performance Case Study在谈到 overdraw 时,他是这样说的:

Removing the window background: the background defined in your theme is used by the system to create preview windows when launching your application. Never set it to null unless your application is transparent. Instead, set it to the color/image you want or get rid of from onCreate() by calling getWindow().setBackgroundDrawable(null).***

然而 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>

此示例生成图像中的结果。你可以看到外层有 overdraw ,窗口背景颜色仍然可见。我希望窗口的背景消失,只有 lineralayout overdraw 。

enter image description here

最佳答案

只需将 getWindow().setBackgroundDrawable(null) 向下移动,直到 setContentView(R.layout.main) 之后的任何位置;例如:

@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
getWindow().setBackgroundDrawable(null);
}

setContentView(...) 调用传播 Activity 所附加窗口上的内容设置,并可能覆盖您打算使用 setBackgroundDrawable(null) 进行的更改>.

结果:

enter image description here

关于android - Overdraw 和 Romain Guy 的博文 Android 性能案例研究,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13906917/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com