0
我只是用achartengine创建一个新图表,我注意到当我移动图表时,它会遍历x轴和y轴。感谢丹这个问题通过更新我的achartengine到1.1.0版本解决。 无论如何,我看到这个问题已经在achartengine demoes上解决了,但我无法理解为什么它不能解决我图表中的问题。achartengine可移动折线图
我想这是我做错了什么,我的XML代码:
<RelativeLayout
android:id="@+id/rlMyChartsGridDown"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/rlMyChartsTopGrid"
android:background="@drawable/weeks_grid_down" >
<LinearLayout
android:id="@+id/chart"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
/>
我的Java代码:
public GraphicalView weightView(Context context) {
manageData = new ManageData(context);
TimeSeries series = new TimeSeries("The day");
TimeSeries maxSeries = new TimeSeries("Max Weight");
TimeSeries minSeries = new TimeSeries("Min Weight");
int count = 0;
float sum = 0;
float max = 0;
int preWeek = 0;
manageData.open();
cursor = manageData.getProfile();
manageData.close();
if ((cursor.moveToFirst()) && (cursor.getCount() != 0)) {
weightUnit = cursor.getString(C_PROFILE_WEIGHT_UNIT);
weight = cursor.getFloat(C_PROFILE_WEIGHT);
bmi = cursor.getFloat(C_PROFILE_BMI);
weightGain();
cursor.close();
minSeries.add(0,weight);
maxSeries.add(0,weight);
minSeries.add(12,weight+1);
maxSeries.add(12,weight+2);
minSeries.add(42,weight+minWeight);
maxSeries.add(42,weight+maxWeight);
}
manageData.open();
Cursor cursor = manageData.getDiaryInfo();
manageData.close();
cursor.moveToFirst();
if (cursor.getCount() > 0) {
preWeek = cursor.getInt(DIARY_WEEK);
}
while (!cursor.isAfterLast()) {
if ((cursor.getInt(DIARY_WEEK) == preWeek)
&& (cursor.getFloat(WEIGHT) != 0)) {
count++;
sum = sum + cursor.getFloat(WEIGHT);
cursor.moveToNext();
} else {
if (count != 0) {
series.add(preWeek, sum/count);
if (max < sum/count) {
max = sum/count;
}
}
sum = 0;
count = 0;
preWeek = cursor.getInt(DIARY_WEEK);
if (cursor.getFloat(WEIGHT) != 0) {
count++;
sum = sum + cursor.getFloat(WEIGHT);
}
cursor.moveToNext();
}
}
if (max < sum/count) {
max = sum/count;
}
series.add(preWeek, sum/count);
cursor.close();
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
dataset.addSeries(series);
dataset.addSeries(minSeries);
dataset.addSeries(maxSeries);
XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();
// Customization Weight line
XYSeriesRenderer renderer = new XYSeriesRenderer();
renderer.setColor(0xff154916);
renderer.setLineWidth(3);
renderer.setPointStyle(PointStyle.CIRCLE);
renderer.setFillPoints(true);
// Customization maxWeight line
XYSeriesRenderer rendererMax = new XYSeriesRenderer();
rendererMax.setColor(0xff8EC239);
rendererMax.setLineWidth(2);
// Customization minWeight line
XYSeriesRenderer rendererMin = new XYSeriesRenderer();
rendererMin.setColor(0xffF7931E);
rendererMin.setLineWidth(2);
mRenderer.setMargins(new int[] {20, 35, 20, 20 });
mRenderer.setApplyBackgroundColor(true);
mRenderer.setBackgroundColor(Color.TRANSPARENT);
mRenderer.setMarginsColor(color);
mRenderer.addSeriesRenderer(renderer);
mRenderer.addSeriesRenderer(rendererMax);
mRenderer.addSeriesRenderer(rendererMin);
mRenderer.setYLabelsColor(0, Color.BLACK);
mRenderer.setXLabelsColor(Color.BLACK);
mRenderer.setLabelsTextSize(18);
mRenderer.setAxesColor(Color.BLACK);
mRenderer.setLabelsColor(Color.BLACK);
mRenderer.setYLabelsAlign(Align.RIGHT);
// mRenderer.setYAxisAlign(Align.LEFT, 0);
mRenderer.setXTitle("Week");
if(weightUnit.equals("kg")){
mRenderer.setYTitle("Weight (kg)");
} else {
mRenderer.setYTitle("Weight (lb)");
}
mRenderer.setZoomButtonsVisible(true);
mRenderer.setLabelsColor(0xff418614);
mRenderer.setLegendTextSize(15);
mRenderer.setPointSize(5);
// mRenderer.setZoomEnabled(false, false);
// mRenderer.setPanEnabled(true, false);
mRenderer.setXAxisMax(43);
mRenderer.setXAxisMin(0);
if(max>maxWeight + weight){
mRenderer.setYAxisMax(max + 10);
} else {
mRenderer.setYAxisMax(maxWeight + weight + 10);
}
mRenderer.setYAxisMin(0);
return ChartFactory.getLineChartView(context, dataset, mRenderer);
}
我主要的Java代码是:
public void onClick(View v) {
switch (v.getId()) {
case R.id.tbMyChartsWeight:
tbMyChartsWeight.setChecked(true);
tbMyChartsWaist.setChecked(false);
tbMyChartsMood.setChecked(false);
line = new LineGraph();
gView = line.weightView(this);
layout = (LinearLayout) findViewById(R.id.chart);
layout.removeAllViews();
layout.addView(gView);
return;
case R.id.tbMyChartsWaist:
tbMyChartsWeight.setChecked(false);
tbMyChartsWaist.setChecked(true);
tbMyChartsMood.setChecked(false);
line = new LineGraph();
gView = line.waistView(this);
layout = (LinearLayout) findViewById(R.id.chart);
layout.removeAllViews();
layout.addView(gView);
return;
case R.id.tbMyChartsMood:
tbMyChartsWeight.setChecked(false);
tbMyChartsWaist.setChecked(false);
tbMyChartsMood.setChecked(true);
line = new LineGraph();
gView = line.mentalView(this);
layout = (LinearLayout) findViewById(R.id.chart);
layout.removeAllViews();
layout.addView(gView);
return;
default:
break;
}
}
我希望有人能帮助我与 ,我对我的英语不好 感谢大家惋惜:]
嗨再次丹和感谢您的帮助。它真的像我的魅力工作,但我只使用透明背景,因为我有我自己的自定义背景,我想导入。有没有办法让我的自定义背景,也没有我得到的问题?再次感谢。 – Blackstar
你可以做的一件事就是将所有边距设置为0,不要使用轴和标签。 –
好的,非常感谢您的帮助和大力支持。 – Blackstar