每次加载具有随机背景颜色的 Android 应用

Loading an Android app with a random background color each time

我正在尝试启动一个我正在处理的应用程序,每次都使用随机背景颜色。我在这里看到了一些关于此的话题,但似乎没有任何帮助。

在 activity_main.xml 中有 "android:background="#F799B3",这是我希望每次生成随机颜色的部分...有什么建议吗?

非常感谢。

在您的 MainActivity.java 中将其放入 onCreate

    Random rnd = new Random();
    int color = Color.argb(rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));
    findViewById(android.R.id.content).setBackgroundColor(color);

如果您总是想要全彩色,请将 argb 的第一个参数替换为 255

好的,你可以做到。设置布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/myLayout" >



</LinearLayout>

然后你在.java上得到一个随机数

Random rand = new Random();
float r = rand.nextFloat();
float g = rand.nextFloat();
float b = rand.nextFloat();

最后在onCreate方法中添加:

View layoutView = findViewById(R.id.myLayout;
layoutView.setBackgroundColor(Color.rgb(Math.round(r), 
                                        Math.round(g), 
                                        Math.round(b) ) );
  1. 修改你的activity主xml和所有可能的xml可以设置背景颜色的

    您必须从主布局中删除行“android:background="#F799B3"”。根本不要在 xml 中设置背景。

  2. 然后,在您的 MainActivity.java 中尝试在扩充布局后设置它。就像这里显示的那样:https://whosebug.com/users/3767038/awk

现在,如果您在 onCreate() 中设置它,它会在您每次打开主程序时发生变化 activity。如果您只想在启动时使用随机颜色背景一次,则必须在应用程序中使用 SavedInstances。

示例:

在你的 onCreate() 中:

 int lastUsedColor = 0 ;
 if(savedInstanceState != null){
   lastUsedColor = savedInstanceState.getInt("lastUsedColor");
   findViewById(android.R.id.content).setBackgroundColor(lastUsedColor);
 }else{
   Random rnd = new 
   int newColor = Color.argb(rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));
   findViewById(android.R.id.content).setBackgroundColor(newColor);
   savedInstanceState.putInt("lastUsedColor", newColor);
   lastUsedColor = newColor;
 }

在你的 onSaveInstanceState(Bundle bundle)

super.onSaveInstanceState(bundle);
bundle.putInt("lastUsedColor", lastUsedColor);

希望对您有所帮助。