最近專案上要使用圖表,便開始在網上找各種圖表架包,好看的都是收費的,最後還是決定用google的achartengine.achartengine使用起來還算好,就是修改樣式很煩.下面就分享下開發經驗吧.
所有的chart都分兩塊,一塊是renderer(如xymultipleseriesrenderer,我的理解是,這個renderer為檢視render的模板,就是你想用什麼圖示,乙個圖圖表基本分2層,這個是最下面一層),一塊是dataset(如xymultipleseriesdataset,用於對檢視數值的處理).
這邊我就拿折線圖舉例吧.
首先需要
xymultipleseriesrenderer mrenderer = new xymultipleseriesrenderer();//建立你需要的圖表最下面的圖層
xyseriesrenderer seriesrenderer = new xyseriesrenderer();//建立你需要在圖層上顯示的具體內容的圖層
mrenderer.addseriesrenderer(seriesrenderer);//新增進去
xymultipleseriesdataset mdataset = new xymultipleseriesdataset()//建立資料層
xyseries series = new xyseries("標題");//建立具體的資料層
series .add(x, y);//新增資料,一般都是for迴圈資料不斷操作這一步新增的
mdataset.addseries(series);
然後呼叫chartfactory.getlinechartintent(context, mdataset, mrenderer),得到乙個intent型別的intent,startactivity(intent)就能得到圖表了.這邊需要在androidmanifest.xml加上.這邊是跳介面檢視圖表,是全屏的.chartfactory可以得到很多檢視,chartfactory.getbarchartintent(context, dataset, renderer, type, activitytitle)就可以得到乙個柱狀圖.以此類推啊.
有時候專案中開發,需要在介面的某一塊展示檢視,這時候我們可以通過 chartfactory.getlinechartview(context, mdataset, mrenderer)得到乙個graphicalview型別的檢視.(這邊就不要需要在androidmanifest.xml加上.)
其實圖表的使用流程就是這樣.但要做乙個自己想要的檢視,就需要設定mrenderer 的樣式,seriesrenderer 的樣式.
mrenderer樣式設定:
mrenderer.setshowaxes(false);//設定是否需要顯示座標軸
mrenderer.setxaxismin(1.3d);//設定x軸最小值
mrenderer.setxaxismax(10d);//設定x軸最大值
mrenderer.setyaxismin(0d); //設定y軸最小值
mrenderer.setyaxismax(maxy + maxy / 6); // 設定y軸最大值
mrenderer.setcharttitletextsize(0);//設定圖表標題字型大小,我這邊設定0是把標題隱藏掉
mrenderer.setylabels(7);//設定y軸標籤數
mrenderer.setexternalzoomenabled(true);//設定是否可以縮放
mrenderer.setzoominlimity(maxy + maxy / 6);//設定y軸最大縮放限
mrenderer.setzoominlimitx(5);//設定x軸最大縮放限
mrenderer.setpanenabled(true, false);//設定滑動,這邊是橫向可以滑動,豎向不可滑動
mrenderer.setxlabels(xlabel.size() - 1);//設定x標籤數量
mrenderer.setxlabelspadding(200);//設定標籤的間距
mrenderer.setxlabelsangle(-45f);//設定標籤傾斜度
for (int i = 0; i < xlabel.size(); i++)
mrenderer.setpanlimits(new double );//設定滑動範圍,這邊我很好奇他的單位,一直有點小問題
mrenderer.setaxescolor(context.getresources().getcolor(r.color.text_hui));//設定數軸的顏色
mrenderer.setgridcolor(context.getresources().getcolor(r.color.text_hui999999)); //設定網格的顏色
mrenderer.setshowgrid(true); /設定是否需要顯示網格
mrenderer.setytitle(label);//設定y軸標題
mrenderer.setlabelscolor(color.black);//設定標籤顏色
mrenderer.setylabelsalign(align.left, 0);//設定標籤居y軸的方向
mrenderer.setaxistitletextsize(20);
mrenderer.setylabelscolor(0, context.getresources().getcolor(r.color.text_hui)); mrenderer.setlabelstextsize(14);
mrenderer.setzoomlimits(new double );//設定縮放限制,setzoominlimity等一樣
mrenderer.setxlabelscolor(context.getresources().getcolor(r.color.text_hui));
mrenderer.setmarginscolor(context.getresources().getcolor(r.color.chart_bg));//設定畫布距數軸之間的顏色
mrenderer.setzoomrate(1.4f);//放大幾倍
seriesrenderer設定部分:
seriesrenderer.setfillbelowline(false); // 設定折線下方是否填充
seriesrenderer.setfillbelowlinecolor(context.getresources().getcolor(r.color.chart_content_color));//填充色
seriesrenderer.setpointstyle(pointstyle.circle); /折線點的樣式
seriesrenderer.setpointstrokewidth(5f);//折線點的大小
seriesrenderer.setdisplaychartvalues(true);//設定顯示折線的點對應的值
seriesrenderer.setchartvaluestextsize(16);
seriesrenderer.setcolor(color.blue);
seriesrenderer.setchartvaluesspacing(7);
seriesrenderer.setlinewidth(3.0f)//折線寬度
seriesrenderer.setdisplaychartvaluesdistance(5);///折線點的值距離折線點的距離
seriesrenderer.setchartvaluestextalign(align.right);
decimalformat df1 = new decimalformat(".00");
seriesrenderer.setchartvaluesformat(df1);//設定折線點的值的格式,顯示小數點後2位
大體就是這樣,這邊舉例的是折線圖,其實柱狀圖也是這樣的流程.可以參考demo,樣式我只能提供這麼多了.一句話,不管什麼檢視,流程都是這個流程.
如果有啥不對的,歡迎指出,不能把錯的分享給別人了,嘿嘿.
Achartengine畫分段動態曲線
最近實驗室做到的專案,需要在手機上實時顯示從wifi模組傳過來的頻譜資料,通過對比網上相簿,最終選了achartengine,經過這兩天的研究終於搞定,在此與大家分享。頻譜圖的要求如下 1,由於是實時資料,因此需要曲線能動態更新 2,資料上傳的速度不快,中間還有可能缺失,因此需要分段顯示 3,橫座標...
關於this 的使用
如有不對的地方請大家指出,呵呵.this 的使用 1.this是指當前物件自己。當在乙個類中要明確指出使用物件自己的的變數或函式時就應該加上this引用。如下面這個例子中 public class a public static void main string args 執行結果 s hellow...
關於IT的我們
首先,對於廣大程式設計師,要先對程式設計師這個職業有個理性的認識。程式設計師不是什麼神聖的職業,這只是乙個普通的技術工種。我認為還算不上是it精英 當然精英的定位,每個人都有不一樣的標準 我個人認為,能自主發現問題,提出方案,構架程式結構的it人士才能算的上it精英。學會某種語言,了解某個領域的基本...