Xamarin如何使用AChartEngine绘制图表

时间:2017-11-18 17:22:46

标签: c# xamarin android-intent charts

我想画一张图表。我找到了AChartEngine库,但它只在java中进行了演示。

我使用demo作为示例进行了Main.axml。如果我理解它是正确的, LinearLayour 将是图表。当我开始实现主代码时,我偶然发现了一个问题:

private IDemoChart[] mCharts = new IDemoChart[]其中IDemoChart接口。

但C#无法从界面创建对象。

另外,我不知道如何将此图表分配给LinearLayout

Main.axml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="add_values"
        android:id="@+id/topText" />
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="x"
            android:padding="5dip" />
        <EditText
            android:inputType="number"
            android:layout_width="71.5dp"
            android:layout_height="match_parent"
            android:id="@+id/xValue"
            android:layout_marginRight="35.5dp" />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="y"
            android:padding="5dip" />
        <EditText
            android:inputType="number"
            android:layout_width="83.0dp"
            android:layout_height="wrap_content"
            android:id="@+id/yValue"
            android:layout_marginLeft="0.0dp"
            android:layout_marginRight="51.5dp" />
        <Button
            android:text="Button"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:id="@+id/add"
            android:layout_marginLeft="5dp" />
    </LinearLayout>
    <LinearLayout
        android:id="@+id/chart"
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="1" />
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
        <Button
            android:id="@+id/new_series"
            android:text="new_series"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>
</LinearLayout>

MainActivity.cs

using Android.App;
using Android.Widget;
using Android.OS;
using AChartEngine.Charts;
using AChartEngine.Models;
using AChartEngine.Renderers;
using AChartEngine;

namespace ChartsAChartEngine
{
    [Activity(Label = "ChartsAChartEngine", MainLauncher = true)]
    public class MainActivity : Activity
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

            TextView topText = FindViewById<TextView>(Resource.Id.topText);
            EditText editTextX = FindViewById<EditText>(Resource.Id.xValue);
            EditText editTextY = FindViewById<EditText>(Resource.Id.yValue);
            Button translateButton = FindViewById<Button>(Resource.Id.add);
            LinearLayout linearLayoutChart = FindViewById<LinearLayout>(Resource.Id.chart);
            var dataSetXY = new XYMultipleSeriesDataset();
            var series = new XYSeries("test");
            series.Add(0, 0);
            series.Add(1, 1);
            series.Add(2, 2);
            dataSetXY.AddSeries(series);
            var renderer = new XYMultipleSeriesRenderer();
            var lineChart = new LineChart(dataSetXY,renderer);
            var view = new GraphicalView(this,lineChart); // how to draw this?
        }
    }
}

1 个答案:

答案 0 :(得分:0)

显然AChartsEngine是专为Java语言的Android应用程序而设计的,因此它在Xamarin C#中运行良好...

我建议你使用另一个插件,到目前为止我找到的最好的插件是这个:

https://blog.xamarin.com/microcharts-elegant-cross-platform-charts-for-any-app/

它很棒,适用于Android,iOS和Windows Phone,全部用于c#和Xamarin

--- --- EDIT
NuGet包使用它:
https://www.nuget.org/packages/Microcharts.Forms/0.8.3-pre(释放前)
OR
https://www.nuget.org/packages/Microcharts.Forms/0.7.1

它还需要另一个插件:SkiaSharp,但它会在安装Microcharts时自动安装。
拥有最新版本的Xamarin.Forms非常重要。