2

我有一个带有背景图像的 android 应用程序。我的目标是创建 3 或 4 个背景图像,并为用户提供更改背景的可能性。

实际上,我有 4 个名为 bg1.png、bg2.png、bg3.png 和 bg4.png 的图像。我已经考虑过在 Strings.xml 中用图像名称声明一个字符串值“背景”。背景图像的名称将始终取自背景字符串,当用户更改背景时,这将仅更改字符串背景的值。

这个想法好还是有更简单的方法?如何使用“背景”字符串的值在 xml 布局文件中设置布局的背景?我应该以编程方式执行此操作吗?

谢谢你。

4

1 回答 1

2

我认为如果您想将背景更改为活动布局,您可以使用布局的 setBackground 方法来实现,例如:

activityLayout = (LinearLayout)findViewById(R.id.tableLayout1);
activityLayout.setBackgroundDrawable(getResources().getDrawable(R.id.somedrawable))

例如,您可以使用 SharedPreference 存储背景图像,然后在启动活动时读取包含背景的首选项。例如当用户选择背景时:

SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", Context.MODE_PRIVATE);
SharedPreferences.Editor prefsEditor = myPrefs.edit();
prefEditor.putInt("backgroudResourceId", userchoice);
prefEditor.commit();

当一个活动开始时,你必须从 SharedPreference 中读取 resourceId:

SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", Context.MODE_PRIVATE);
drawableid = myPrefs.getInt("backgroundResourceId", defaultvalue); 
yourlayout.setBackground(drawableid);

其中 defaultvalue 是未设置首选项时的默认值。yourLayout 应该被初始化(以与活动布局相同的方式)。

于 2012-06-05T11:51:42.457 回答