Java 在布局中加载图表
我尝试在布局中加载一个图形,一个使用AChartEngine的数学图形。我从网站下载了一个演示zip,我意识到我需要一个类似sin-cosin-grahp风格的东西。这是我写的代码:Java 在布局中加载图表,java,android,achartengine,Java,Android,Achartengine,我尝试在布局中加载一个图形,一个使用AChartEngine的数学图形。我从网站下载了一个演示zip,我意识到我需要一个类似sin-cosin-grahp风格的东西。这是我写的代码: package com.myproject; import org.achartengine.ChartFactory; import org.achartengine.GraphicalView; import org.achartengine.chart.PointStyle;
package com.myproject;
import org.achartengine.ChartFactory;
import org.achartengine.GraphicalView;
import org.achartengine.chart.PointStyle;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.renderer.XYMultipleSeriesRenderer;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.view.View;
import android.webkit.WebView;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import com.myproject.clases.AbstractDemoChart;
public class MainActivity extends Activity {
private WebView ventana;
private GraphicalView mChartView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
XYMultipleSeriesDataset mDataset = null;//this line causes runtime error but I will see this issue later.
int [] colors = new int[] { Color.BLUE, Color.CYAN };
PointStyle[] styles = new PointStyle[] { PointStyle.POINT, PointStyle.POINT };
XYMultipleSeriesRenderer mRenderer = buildRenderer(colors, styles);
LinearLayout layout = (LinearLayout) findViewById(R.id.chart);
mChartView = ChartFactory.getLineChartView(this, mDataset, mRenderer);
layout.addView(mChartView, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
}
}
但是这条线
XYMultipleSeriesRenderer mRenderer = buildRenderer(colors, styles);
由于buildRenderer()方法属于AbstractDemoChart类,导致编译错误。我如何从另一个类中获取一个方法以在另一个类中使用?这可能是我知道的对象编程的一个基本问题,但我在这里问这个问题也是为了知道我在布局中加载grahp图表的意图是否做得很好。我在Eclipse工作。谢谢
buildRenderer
是AbstractDemoChart
中受保护的方法。但在示例buildRenderer
中,是一个私有方法,它可以执行以下操作:
private XYMultipleSeriesRenderer buildRenderer(int[] colors,PointStyle[] styles)
{
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
setRenderer(renderer, colors, styles);
return renderer;
}
你看过代码吗?它通过以下方式创建渲染器:
private XYMultipleSeriesRenderer getDemoRenderer() {
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
renderer.setAxisTitleTextSize(16);
renderer.setChartTitleTextSize(20);
renderer.setLabelsTextSize(15);
renderer.setLegendTextSize(15);
renderer.setPointSize(5f);
renderer.setMargins(new int[] {20, 30, 15, 0});
...
我认为您应该更改初始化
xymultiplesseriesrender
buildRenderer
是AbstractDemoChart
中受保护的方法。但在示例buildRenderer
中,是一个私有方法,它可以执行以下操作:
private XYMultipleSeriesRenderer buildRenderer(int[] colors,PointStyle[] styles)
{
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
setRenderer(renderer, colors, styles);
return renderer;
}
你看过代码吗?它通过以下方式创建渲染器:
private XYMultipleSeriesRenderer getDemoRenderer() {
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
renderer.setAxisTitleTextSize(16);
renderer.setChartTitleTextSize(20);
renderer.setLabelsTextSize(15);
renderer.setLegendTextSize(15);
renderer.setPointSize(5f);
renderer.setMargins(new int[] {20, 30, 15, 0});
...
我认为您应该更改初始化
xymultiplesseriesrender
的方式,谢谢Sam,我做了或多或少的操作,正如您传递给我的链接所示,现在可以了图形显示得很好,但出现了一些新问题。我的图形的背景是白色的,我希望它是黑色的(我想我可以修复它),如果图形的容器视图设置为高度为wrap_content,则图形被限制在其他布局留下的空间中,并且无法正确查看。所以我必须把它设置在指定的尺寸上,比如说150dp来正确显示,这也发生在你身上了吗?。最后一个问题,我必须通过编程调整文本和数字的大小,因为它们往往会重叠。再次感谢Sam@JoeCoolman,我没有看到你的应用程序,但为什么wrap\u content
?这里不是更好吗?对不起,如果我误解了你的意图。还可以查看他们自己的示例代码,看看他们使用了什么布局。我想显示图形以及一些其他信息和额外数据,而不仅仅是图形。好的,Sam谢谢你的见解。谢谢Sam,我做了或多或少的事情,正如你发给我的链接所示,现在没关系了,图表显示得很好,但出现了一些新问题。我的图形的背景是白色的,我希望它是黑色的(我想我可以修复它),如果图形的容器视图设置为高度为wrap_content,则图形被限制在其他布局留下的空间中,并且无法正确查看。所以我必须把它设置在指定的尺寸上,比如说150dp来正确显示,这也发生在你身上了吗?。最后一个问题,我必须通过编程调整文本和数字的大小,因为它们往往会重叠。再次感谢Sam@JoeCoolman,我没有看到你的应用程序,但为什么wrap\u content
?这里不是更好吗?对不起,如果我误解了你的意图。还可以查看他们自己的示例代码,看看他们使用了什么布局。我想显示图形以及一些其他信息和额外数据,而不仅仅是图形。好的,山姆,谢谢你的见解。