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

时间:2015-03-20 17:25:17

标签: android random background

我正在尝试启动一个我正在使用随机背景颜色的应用程序。我已经在这里看到了一些关于这一点的线索,但似乎没有任何东西可以帮助我。

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

非常感谢。

3 个答案:

答案 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)

  1. 修改您的活动主xml以及可以设置背景颜色的每个可能的xmls。

    您必须删除该行&#34; android:background =&#34;#F799B3&#34; &#34;从主要布局。不要在xml中设置背景。

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

  3. 现在,如果您在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);
    

    希望它有所帮助。