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