android - Change color of selected bar in Achartengine -
i have change color of particular bar selected user in bar chart. when ever user select bar want change color of bar , again if user change selection of bar last selected bar show default color.
note: saw in 1 post have use 1 more series contain selected bar can achieve that. need sample code understand that.
private string[] mmonth = new string[] { "january", "feburary", "march", "april", "may", "june", "july", "aug", "sep", "oct", "nov", "dec" }; int[] x = { 0, 1, 2, 3, 4, 5, 6, 7 }; int[] income = { 2000, 2500, 2700, 3000, 2800, 3500, 3700, 3800 }; public static final string type = "type"; private xymultipleseriesdataset mdataset = getdemodataset(); private xymultipleseriesrenderer mrenderer = getdemorenderer(); private graphicalview mchartview; protected void oncreate(bundle savedinstancestate) { // todo auto-generated method stub super.oncreate(savedinstancestate); setcontentview(r.layout.xy_chart); if (mchartview == null) { linearlayout layout = (linearlayout) findviewbyid(r.id.chart); mchartview = chartfactory.getbarchartview(this, mdataset, mrenderer, type.default); mrenderer.setselectablebuffer(100); layout.addview(mchartview, new layoutparams(layoutparams.match_parent, layoutparams.match_parent)); } else { mchartview.repaint(); } mchartview.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { // todo auto-generated method stub // handle click event on chart seriesselection seriesselection = mchartview.getcurrentseriesandpoint(); if (seriesselection == null) { toast.maketext(newtest.this, "no chart element", toast.length_short).show(); } else { (int = 0; < x.length; i++) { simpleseriesrenderer renderer = mrenderer.getseriesrendererat(seriesselection.getseriesindex()); renderer.setcolor(color.red); } mchartview.repaint(); // display information of clicked point toast.maketext( newtest.this, "chart element in series index " + seriesselection.getseriesindex() + " data point index " + seriesselection.getpointindex() + " clicked" + " closest point value x=" + seriesselection.getxvalue() + ", y=" + seriesselection.getvalue(), toast.length_short).show(); } } }); } private xymultipleseriesdataset getdemodataset() { xyseries incomeseries = new xyseries("income"); (int = 0; < x.length; i++) { incomeseries.add(i, income[i]); } xymultipleseriesdataset dataset = new xymultipleseriesdataset(); dataset.addseries(incomeseries); return dataset; } private xymultipleseriesrenderer getdemorenderer() { xyseriesrenderer incomerenderer = new xyseriesrenderer(); incomerenderer.setcolor(color.rgb(130, 130, 230)); incomerenderer.setfillpoints(true); incomerenderer.setlinewidth(2); incomerenderer.setchartvaluestextalign(align.center); incomerenderer.setchartvaluesspacing(15); incomerenderer.setdisplaychartvalues(true); xymultipleseriesrenderer multirenderer = new xymultipleseriesrenderer(); multirenderer.setxlabels(0); multirenderer.setylabelspadding(15); multirenderer.setbarspacing(0.3f); multirenderer.setbarwidth(30); multirenderer.setcharttitle("income chart"); multirenderer.setxtitle("year 2013"); multirenderer.setytitle("amount in dollars"); //multirenderer.setzoomlimits(1.0,0.7,1.0,3000.0); multirenderer.setzoombuttonsvisible(true); //multirenderer.setzoomenabled(true, true); //multirenderer.setpanenabled(true, true); multirenderer.setinscroll(true); multirenderer.setxaxismin(-0.5); multirenderer.setxaxismax(7); multirenderer.setyaxismin(0); multirenderer.setyaxismax(4000); multirenderer.setmargins(new int[] {30, 50, 20, 10}); multirenderer.setclickenabled(true); multirenderer.setshowgridx(true); (int = 0; < x.length; i++) { multirenderer.addxtextlabel(i, mmonth[i]); } multirenderer.addseriesrenderer(incomerenderer); return multirenderer; }
}
i see handling click events on chart view. every bar series has own color. in order have bar different color, has belong series. in case, have remove bar series belongs , add series 1 item, selected bar.
on second click, reverse operation above.
Comments
Post a Comment