java - How to programmatically change the background image of an Android Activity -
i have been able change colour of activity background (see this post). requirement same background image. mean can click button, select option , change current activity background image new one.
here have done:
private sharedpreferences prefs; private static final string selected_item = "selecteditem"; private editor sharedprefeditor; btnchangecolor = (imagebutton) findviewbyid(r.id.btnchangecolor); btnchangecolor.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { final charsequence[] items={getstring(r.string.default),getstring(r.string.pix1), getstring(r.string.pix2))}; alertdialog.builder builder = new alertdialog.builder( contentview.this); builder.settitle((getresources().getstring(r.string.color_switch))); builder.setpositivebutton((r.string.ok), new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { } }); builder.setsinglechoiceitems(items, getselecteditem(), new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { wvcontent = (webview) findviewbyid(r.id.wvcontent); int bg_color=0; if(getstring(r.string.default).equals(items[which])) { wvcontent.setbackgroundcolor(0); bitmapdrawable bg = (bitmapdrawable)getresources().getdrawable(r.drawable.default); bg.settilemodexy(tilemode.repeat, tilemode.repeat); wvcontent.setbackgrounddrawable(bg); bg_color=r.drawable.default; } else if(getstring(r.string.pix1).equals(items[which])) { wvcontent.setbackgroundcolor(0); bitmapdrawable bg = (bitmapdrawable)getresources().getdrawable(r.drawable.pix1); bg.settilemodexy(tilemode.repeat, tilemode.repeat); wvcontent.setbackgrounddrawable(bg); bg_color=r.drawable.pix1; } else if(getstring(r.string.pix2).equals(items[which])) { wvcontent.setbackgroundcolor(0); bitmapdrawable bg = (bitmapdrawable)getresources().getdrawable(r.drawable.pix2); bg.settilemodexy(tilemode.repeat, tilemode.repeat); wvcontent.setbackgrounddrawable(bg); bg_color=r.drawable.pix2; } saveselecteditem(bg_color); } }); builder.show();
changes saved , loaded using following code:
//oncreate wvcontent = (webview) findviewbyid(r.id.wvcontent); wvcontent.setbackgroundcolor(getselecteditem()); ... private int getselecteditem() { if (prefs == null) { prefs = preferencemanager .getdefaultsharedpreferences(this); } return prefs.getint(selected_item, -1); } private void saveselecteditem(int which) { if (prefs == null) { prefs = preferencemanager .getdefaultsharedpreferences(this); } sharedprefeditor = prefs.edit(); sharedprefeditor.putint(selected_item, which); sharedprefeditor.commit(); }
the activity background image change when selected dialog list, change not saved , loaded next time when activity relaunched.
i have no idea how solve problem. can please help? many thanks.
when setting background after selecting dialog
getting resource id r.drawable.pix2
, retrieving bitmapdrawable
follows...
wvcontent.setbackgroundcolor(0); bitmapdrawable bg = (bitmapdrawable)getresources().getdrawable(r.drawable.pix2); bg.settilemodexy(tilemode.repeat, tilemode.repeat); wvcontent.setbackgrounddrawable(bg); bg_color=r.drawable.pix2;
but in oncreate()
method passing resource id below...
wvcontent.setbackgroundcolor(getselecteditem());
where, getselecteditem()
returns int
value resource id.
now, set background drawable follows in oncreate()
method...
wvcontent.setbackgroundcolor(0); bitmapdrawable bg = (bitmapdrawable)getresources().getdrawable(getselecteditem()); bg.settilemodexy(tilemode.repeat, tilemode.repeat); wvcontent.setbackgrounddrawable(bg);
you can update background sdcard follows...
string pathname = environment.getexternalstoragedirectory().getpath() + "/folder/" + "image.jpg"; resources res = getresources(pathname); bitmap bitmap = bitmapfactory.decodefile(pathname); bitmapdrawable backgrounddrawable = new bitmapdrawable(res, bitmap); wvcontent.setbackgrounddrawable(backgrounddrawable);
Comments
Post a Comment