我正在尝试启动一个我正在使用随机背景颜色的应用程序。我已经在这里看到了一些关于这一点的线索,但似乎没有任何东西可以帮助我。
在activity_main.xml中它有“android:background =”#F799B3“,这是我希望每次生成随机颜色的部分......有什么建议吗?
非常感谢。
答案 0 :(得分:3)
在您的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
答案 1 :(得分:1)
好的,你可以这样做。设置你的布局
<?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) ) );
答案 2 :(得分:0)
修改您的活动主xml以及可以设置背景颜色的每个可能的xmls。
您必须删除该行&#34; android:background =&#34;#F799B3&#34; &#34;从主要布局。不要在xml中设置背景。
然后,在您的MainActivity.java中尝试在填充布局后设置它。就像这里显示的那样:https://stackoverflow.com/users/3767038/awk
现在,如果您在onCreate()中设置它,它将在您每次打开主活动时更改。如果你想只有一次随机颜色背景,只在启动时,你必须在你的应用程序中使用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);
希望它有所帮助。