每次加载具有随机背景颜色的 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) ) );
修改你的activity主xml和所有可能的xml可以设置背景颜色的
您必须从主布局中删除行“android:background="#F799B3"”。根本不要在 xml 中设置背景。
然后,在您的 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);
希望对您有所帮助。
我正在尝试启动一个我正在处理的应用程序,每次都使用随机背景颜色。我在这里看到了一些关于此的话题,但似乎没有任何帮助。
在 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) ) );
修改你的activity主xml和所有可能的xml可以设置背景颜色的
您必须从主布局中删除行“android:background="#F799B3"”。根本不要在 xml 中设置背景。
然后,在您的 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);
希望对您有所帮助。