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

Popular posts from this blog

android - Get AccessToken using signpost OAuth without opening a browser (Two legged Oauth) -

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: mockito -

google shop client API returns 400 bad request error while adding an item -