我一直試圖在Android上動態繪製條形圖,但無濟於事。動態繪製條形圖時遇到問題[AChartEngine]
我似乎錯過了我的代碼中的東西,但我無法弄清楚它是什麼。我做了一個新項目,可以清楚地說明我的問題。這個代碼應該允許條形圖在按下按鈕時改變,但是當它被按下時,它看起來只是被清除了,而沒有被重新繪製。這是我的MainActivity.java代碼:
package com.example.dynamicbargraph;
import org.achartengine.GraphicalView;
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;
import android.app.Activity;
public class MainActivity extends Activity {
private BarGraph bar = new BarGraph();
private GraphicalView barView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//bar graph view initialize
barView = bar.getBarView(this);
LinearLayout barLayout = (LinearLayout) findViewById(R.id.barchart);
barLayout.addView(barView);
}
public void buttonHandler(View view)
{
LinearLayout barLayout = (LinearLayout) findViewById(R.id.barchart);
barLayout.removeView(barView);
bar.staticPlot();
barView.repaint();
}
}
這是BarGraph.java代碼:
package com.example.dynamicbargraph;
import org.achartengine.ChartFactory;
import org.achartengine.GraphicalView;
import org.achartengine.chart.BarChart.Type;
import org.achartengine.model.CategorySeries;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.renderer.XYMultipleSeriesRenderer;
import org.achartengine.renderer.XYSeriesRenderer;
import android.content.Context;
import android.graphics.Color;
public class BarGraph {
private GraphicalView view;
private CategorySeries series = new CategorySeries("Accelerometer");
private XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
private XYSeriesRenderer renderer = new XYSeriesRenderer(); //used for customizing
private XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();
@SuppressWarnings("deprecation")
public BarGraph()
{
int[] y ={1,2,3,4,5,6,7,8,9,10};
for (int i = 0; i < 10; i++)
{
series.add("Bar" + (i+1), y[i]);
}
dataset.addSeries(series.toXYSeries());
//below are just customization codes
renderer.setChartValuesSpacing((float) 0.5);
renderer.setColor(Color.GRAY);
mRenderer.addSeriesRenderer(renderer);
mRenderer.setChartTitle("Arm Steadiness From Device");
mRenderer.setXTitle("Frequency (Hz)");
mRenderer.setYTitle("Magnitude");
float textSize = 30, textSmaller = 20, angle = 270;
mRenderer.setAxisTitleTextSize(textSize);
mRenderer.setYLabelsAngle(angle);
mRenderer.setLabelsTextSize(textSize);
mRenderer.setChartValuesTextSize(textSize);
mRenderer.setLegendTextSize(textSmaller);
mRenderer.setChartTitleTextSize(textSize);
mRenderer.setAxesColor(Color.YELLOW);
mRenderer.setGridColor(Color.YELLOW);
mRenderer.setLabelsColor(Color.rgb(112, 128, 144));
//adjusting margin width of y-axis (so y axis labels can be seen)
int[] i = mRenderer.getMargins();
i[0] += 50;//top
i[1] += 50;//left (increment here)
//i[2] = 0;//bottom
//i[3] = 0;//right
mRenderer.setMargins(i);
}
public GraphicalView getBarView(Context context)
{
view = ChartFactory.getBarChartView(context, dataset, mRenderer, Type.DEFAULT);
return view;
}
public void staticPlot()
{
int[] y ={10,9,8,7,6,5,4,3,2,1};
for (int i = 0; i < 10; i++)
{
series.add("Bar" + (i+1), y[i]);
}
}
}
最後,調用buttonHandler的activity_main.xml中的代碼點擊時:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<LinearLayout
android:id="@+id/barchart"
android:layout_width="fill_parent"
android:layout_height="400dp"
android:orientation="vertical" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:onClick="buttonHandler"
android:text="@string/hello_world" />
</RelativeLayout>
我知道我錯過了buttonHandler中的某些東西,但我不知道它是什麼。任何幫助將不勝感激。謝謝!
它的工作原理,感謝您的幫助!也是你非常有用的視頻 – user3307418