我正在嘗試做類似this的操作,但我對它的外觀有一點靈活性。基本上是一個只填充部分餅圖的餅圖(其餘部分留空)或某種撥號圖。Android極座標圖形
使用極座標圖繪製兩個箭頭也是相對容易的,一個是0度,另一個是-92度,但是我找不到任何可以讓你爲Android做這個的庫。我確實需要它使0度看起來像0極度。
我已經使用了一個AChartEngine DialChart,並設法讓東西靠近,但我無法弄清楚如何讓標籤出現在每個箭頭上。我試過renderer.setDisplayValues(true);
和series.setDisplayChartValues(true);
但它不會顯示我的兩個箭頭的值,所以我不確定是否可以用DialChart。我意識到,如果我在後臺顯示撥號標籤,我的用戶將不需要在箭頭上添加標籤,但是我旋轉添加了DialChart的LinearLayout以使0看起來像0度在極座標圖中。儘管使用renderer.setShowLabels(false);
並設置了幾乎所有其他可顯示爲假的東西,但我仍努力在後臺隱藏錶盤的標籤。我的竅門是將標籤顏色設置爲背景顏色,但是如果有更好的方法來實現它,請告訴我。
這是我的DialChart代碼。
CategorySeries category = new CategorySeries("Angle");
category.add("Extension", 0);
category.add("Flexion", 90);
renderer = new DialRenderer();
renderer.setLabelsColor(getActivity().getResources().getColor(R.color.background));
renderer.setInScroll(true);
renderer.setDisplayValues(true);
renderer.setShowLegend(false);
renderer.setShowAxes(false);
renderer.setShowLabels(false);
renderer.setShowGrid(false);
renderer.setMargins(new int[] {20, 30, 15, 0});
renderer.setVisualTypes(new DialRenderer.Type[] {Type.ARROW, Type.ARROW});
renderer.setMinValue(-20);
renderer.setMaxValue(280);
renderer.setPanEnabled(false);
renderer.setZoomEnabled(false);
SimpleSeriesRenderer r = new SimpleSeriesRenderer();
series.setColor(getActivity().getResources().getColor(R.color.green));
series.setDisplayChartValues(true);
series.setChartValuesTextSize(30);
visualizationRenderer.addSeriesRenderer(r);
r = new SimpleSeriesRenderer();
series.setColor(getActivity().getResources().getColor(R.color.green));
series.setDisplayChartValues(true);
series.setChartValuesTextSize(30);
renderer.addSeriesRenderer(r);
visualization = ChartFactory.getDialChartView(getActivity(), category, renderer);
LinearLayout layout = (LinearLayout) this.getView().findViewById(R.id.sessions_visualization);
layout.addView(visualization);
layout.setRotation(220.0f);
我接受任何修改這個代碼,以獲得一些作品,或其他庫,將幫助我完成我要做的。謝謝!
看起來你似乎找到了解決辦法:你問題中的最後一段。 –
我不知道其他人是否做了類似的事情(並且在搜索幾個小時後找不到任何東西),所以最後一段是詢問是否有人知道哪個庫更好用,因爲我無法獲得AChartEngine做我想做的事。我最終創建了一個自定義視圖(我不知道你現在可以在Android中完成)。 – laberle