如何更改整个应用程序的背景图像

时间:2013-05-24 08:40:41

标签: android

在我的应用程序中,我创建了5个活动文件,对应于5个xml文件。现在,在第一个活动中,我已经放置了一个按钮,导航到另一个活动,我可以从中选择一个图像。现在我想要的图像是选择将附加在整个应用程序的背景中。我该怎么做?请建议我..

4 个答案:

答案 0 :(得分:6)

以下是为应用程序设置一个通用背景的方法,可根据您的要求进行修改。

按照以下方式制作自己的风格:

<style name="Background" parent="@android:style/Theme.NoTitleBar">
<item name="android:windowBackground">@android:color/black</item>
<item name="android:windowNoTitle">true</item>

现在在清单文件中这样做:

<application  android:theme="@style/Background"/>

以下是主题更新的全局方法,在每个活动中的setContentView之前使用您的活动上下文调用此方法

public static void setTheme(Context context){

    SharedPreferences pref=context.getSharedPreferences("preference",0);
    int position= pref.getInt("BackgroundPosition", 0);

    switch (position) {
    case 0:

        context.setTheme(R.style.Background0);

        break;

    case 1:

        context.setTheme(R.style.Background1);

        break;

    case 2:

        context.setTheme(R.style.Background2);

        break;

    case 3:
        context.setTheme(R.style.Background3);
        break;

    case 4:
        context.setTheme(R.style.Background4);
        break;
    }
}

由于

答案 1 :(得分:0)

保存背景图片名称(如果您希望在应用程序耗尽后仍然需要相同的图像,则可以使用SharedPreferences 在每个活动中动态加载它。

LinearLayout ll = (LinearLayout) findViewById(R.id.blayout);
//This function will change background drawable, so place it where you want.
ll.setBackgroundDrawable(yourDrawableID);

答案 2 :(得分:0)

Lazy Ninja的回答似乎很好。但是你想要一些不同的东西,你可以试试这个。

免责声明:这只是一个实验性解决方案。之前没试过。所以在实施之前需要确定

创建基本活动并扩展您可以设置活动根布局的所有活动。在那里设置oncreate的布局。在BaseActivity中,ovverride onresume。在onresume中将背景图像设置为Ninja建议的设置页面的共享首选项

代码示例

public class BaseActivity extends Activity{

   private ViewGroup root;
   onResume(){
      root.setBackgroundImage();
   }

   public void setRoot(ViewGroup v){
      root = v;
   }

}


class A extends BaseActivity{
   onCreate(Bundle b){
      ....

      setRoot(pass the root view);
     ......
}

答案 3 :(得分:0)

我得到了我自己的问题的解决方案: -

    public static void setHomeSafeTheme(Context context) {

    SharedPreferences pref=context.getSharedPreferences(HomeSAFEPref.HomeSAFEPref,0);
    int position= pref.getInt("BackgroundPosition", 0);

    switch (position) {
    case 0:

        context.setTheme(R.style.Background0);

        break;

    case 1:

        context.setTheme(R.style.Background1);

        break;

    case 2:

        context.setTheme(R.style.Background2);

        break;

    case 3:
        context.setTheme(R.style.Background3);
        break;

    case 4:
        context.setTheme(R.style.Background4);
        break;
    }
}
相关问题
最新问题