android - Reinitialize a layout based on a config file -
android - Reinitialize a layout based on a config file -
i have menu activity , settings activity. settings activity started menu activity comes straight after menu activity in stack trace.
my menu activity has severel buttons, 1 each function of app. of these functions can enabled , disabled using settings activity. configurations saved in preferences.
if function disabled should not available button in menu screen.
so... problem: need reload whole menu activity after user changed configuration file using settings activity otherwise have restart app until changes taking effect.
so how can remove / add together buttons from/to layout of menu activity when button in settings activity clicked?
/** * */ @override public void onviewcreated(view view, @nullable bundle savedinstancestate) { super.onviewcreated(view, savedinstancestate); this.layoutmenu = (relativelayout) view.findviewbyid(r.id.menu_layout); this.circularimageview = (circularimageview) view.findviewbyid(r.id.menu_imageview_profile); this.circularimageview.setimagedrawable(images.loaddrawablefromfile(this.getactivity(), paths.image_profile)); this.textviewvalue = (textview) view.findviewbyid(r.id.menu_textview_measure_value); this.textviewdate = (textview) view.findviewbyid(r.id.menu_textview_measure_date); this.textviewunit = (textview) view.findviewbyid(r.id.menu_textview_measure_unit); this.buttonprofile = new imagebutton(this.getactivity()); this.buttonprofile.setlayoutparams(new relativelayout.layoutparams(relativelayout.layoutparams.wrap_content, relativelayout.layoutparams.wrap_content)); this.buttonprofile.setimageresource(r.drawable.ic_profile); this.buttonprofile.setbackground(null); this.buttoncontacts = new imagebutton(this.getactivity()); this.buttoncontacts.setlayoutparams(new relativelayout.layoutparams(relativelayout.layoutparams.wrap_content, relativelayout.layoutparams.wrap_content)); this.buttoncontacts.setimageresource(r.drawable.ic_message); this.buttoncontacts.setbackground(null); this.buttoncalc = new imagebutton(this.getactivity()); this.buttoncalc.setlayoutparams(new relativelayout.layoutparams(relativelayout.layoutparams.wrap_content, relativelayout.layoutparams.wrap_content)); this.buttoncalc.setimageresource(r.drawable.ic_calculator); this.buttoncalc.setbackground(null); this.buttonsettings = new imagebutton(this.getactivity()); this.buttonsettings.setlayoutparams(new relativelayout.layoutparams(relativelayout.layoutparams.wrap_content, relativelayout.layoutparams.wrap_content)); this.buttonsettings.setimageresource(r.drawable.ic_settings); this.buttonsettings.setbackground(null); string email = this.getemail(); map<string, boolean> config = this.sessionconfigpreferences.getconfigdetails(email); list<view> views = new arraylist<view>(); views.add(this.buttonprofile); if(config.get(globals.config_contacts)) { views.add(this.buttoncontacts); } if(config.get(globals.config_calc)) { views.add(this.buttoncalc); } views.add(this.buttonsettings); this.circleview = new circularlayout(this.getactivity(), this, views); this.layoutmenu.addview(this.circleview); } and circularlayout:
public class circularlayout extends dragablebuttonslayout { private list<view> menubuttons = null; private imageview imageviewcenter = null; private imagebutton imagebuttoncenter = null; private int radius = -1; private double step = -1; private double angle = -1; private static final int center_id = 111; public circularlayout(context context, dragcallback dragcallback, list<view> menubuttons) { super(context); this.dragcallback = dragcallback; this.menubuttons = menubuttons; this.radius = sizes.getoptimalcenterradius(context); this.step = (2 * math.pi) / menubuttons.size(); this.initview(); } private void initview() { relativelayout.layoutparams layoutparams = new relativelayout.layoutparams(relativelayout.layoutparams.match_parent, relativelayout.layoutparams.wrap_content); this.setlayoutparams(layoutparams); relativelayout.layoutparams layoutparamscenter = new relativelayout.layoutparams(relativelayout.layoutparams.match_parent, sizes.getoptimalmenuheight(this.getcontext())); layoutparamscenter.addrule(relativelayout.center_in_parent); relativelayout relativelayoutcenter = new relativelayout(this.getcontext()); relativelayoutcenter.setlayoutparams(layoutparamscenter); relativelayout.layoutparams layoutparamsimageviewcenter = new relativelayout.layoutparams(relativelayout.layoutparams.wrap_content, relativelayout.layoutparams.wrap_content); layoutparamsimageviewcenter.addrule(relativelayout.center_in_parent); this.imageviewcenter = new imageview(this.getcontext()); this.imageviewcenter.setlayoutparams(layoutparamsimageviewcenter); this.imageviewcenter.setimagedrawable(images.loaddrawablefromfile(this.getcontext(), paths.image_background_power)); this.imageviewcenter.setbackground(null); relativelayout.layoutparams layoutparamsimagebuttoncenter = new relativelayout.layoutparams(relativelayout.layoutparams.wrap_content, relativelayout.layoutparams.wrap_content); layoutparamsimagebuttoncenter.addrule(relativelayout.center_in_parent); this.imagebuttoncenter = new imagebutton(this.getcontext()); this.imagebuttoncenter.setid(center_id); this.imagebuttoncenter.setlayoutparams(layoutparamsimagebuttoncenter); this.imagebuttoncenter.setimagedrawable(images.loaddrawablefromfile(this.getcontext(), paths.image_power)); this.imagebuttoncenter.setbackground(null); this.imagebuttoncenter.setondraglistener(new droptargetondraglistener()); relativelayoutcenter.addview(this.imageviewcenter); relativelayoutcenter.addview(this.imagebuttoncenter); relativelayoutcenter.setondraglistener(new menubuttonondraglistener()); for(view view : this.menubuttons) { relativelayoutcenter.addview(this.placeview(view)); } this.addview(relativelayoutcenter); } private view placeview(view view) { view.measure(0, 0); this.imagebuttoncenter.measure(0, 0); int x = (int)((view.getmeasuredwidth() / 2) + this.radius * math.cos(this.angle)); int y = (int)((view.getmeasuredheight() / 2) + this.radius * math.sin(this.angle)); this.angle += this.step; int deltax = view.getmeasuredwidth(); int deltay = view.getmeasuredheight(); int deltaimagex = this.imagebuttoncenter.getmeasuredwidth() / 2; int deltaimagey = this.imagebuttoncenter.getmeasuredheight() / 2; int xtodraw = ((x - deltax) - deltaimagex); int ytodraw = ((y - deltay) - deltaimagey); relativelayout.layoutparams layoutparams = new relativelayout.layoutparams(relativelayout.layoutparams.wrap_content, relativelayout.layoutparams.wrap_content); layoutparams.addrule(relativelayout.above, center_id); layoutparams.addrule(relativelayout.right_of, center_id); layoutparams.setmargins(xtodraw, 0, 0, ytodraw); view.setlayoutparams(layoutparams); view.setontouchlistener(this); homecoming view; } }
how building gui? if building dynamically @ run-time easy add together or not button or control.
android
Comments
Post a Comment