Android - 动态设置整个应用程序的背景视图

时间:2014-12-05 05:01:46

标签: java android xml android-intent colors

我使用以下代码设置应用的背景颜色:

RelativeLayout rl = (RelativeLayout)findViewById(R.id.layout);
rl.setBackgroundColor(Color.RED);

如果不使用XML,我怎么能把它延续到这个之后的下一个活动,因为它并不总是颜色RED。这取决于用户的选择。但是一旦用户选择了RED,我希望这种颜色能够延续到下一个活动。有没有办法解决这个问题而不为所有活动人员做这样的事情。

Intent intent = new Intent(this, NextActivity.class);
intent.putExtra("Color", "RED");
startActivity(intent);

然后在下一个活动中使用Extra来设置颜色。有没有办法可以在用户更改之前为所有以下活动设置它?

感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

android中使用的

颜色为int格式而不是String

setBackgroundColor() takes a color in numeric form (e.g., 0xFFFF0000 for red)


所以你可以这样做:

假设从class A发送一个int变量到class B

int bgColor=Color.RED; <---Change It with whatever you want(but should be numeric)

Intent bgIntent = new Intent(Background.this, MainScreen.class);
bgIntent.putExtra("background",  bgColor);
startActivity(bgIntent);

和B级

Intent bgIntent = getIntent();
bgGlobal = bgIntent.getExtras().getInt("background",-1);

if(bgGlobal != -1) 
{
   DetailsLayout.setBackgroundResource(Color.parseColor(bgGlobal));
}
else 
{
   DetailsLayout.setBackgroundResource(R.color.a1);
}

了解更多信息,请参阅this

答案 1 :(得分:0)

我认为您需要获得该颜色的#Code并使用

发送值

Intent intent = new Intent(this, NextActivity.class);
intent.putExtra("Color", "#Code");
startActivity(intent);

在下一个活动中..

RelativeLayout rl = (RelativeLayout)findViewById(R.id.layout);
rl.setBackgroundColor(Color.parseColor(intent.getExtra("Color")));

答案 2 :(得分:0)

将背景颜色的设置放在单个类中,比如说

public class ColorHolder {
    public static ColorHolder instance=null;
    private int color;
    public static ColorHolder getInstance(){
        if(instance==null){
            instance=new ColorHolder();
        }
    }
    public int getColor(){
        return color;
    }
    public void setColor(int c){
        color=c;
    }
}

然后创建一个Activity的子类,比如说

public class ColoredActivity extends Activity{
    protected void onCreate(Bundle s){
        super.onCreate(s);
        RelativeLayout rl = (RelativeLayout)findViewById(R.id.layout);
        rl.setBackgroundColor(ColorHolder().getInstance().getColor());
    }
}

然后,所有想要应用此设置的活动都应该扩展这个&#34; ColoredActivity&#34;