2013-05-18 29 views
1

我嘗試使用AChartEngine在佈局,數學圖形中加載圖形。我從網站下載了一個演示zip文件,我意識到我需要像sin-cosin grahp風格的東西。所以,這是我寫的代碼:在佈局中加載圖表

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工作。謝謝

回答

1

buildRendererAbstractDemoChart中的受保護方法。但AChartExampleActivity樣品中buildRenderer是做到這一點的私有方法:

private XYMultipleSeriesRenderer buildRenderer(int[] colors,PointStyle[] styles) 
    { 
     XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(); 
     setRenderer(renderer, colors, styles); 
     return renderer; 
    } 

你見過GeneratedChartDemo代碼?它創建渲染器是這樣的:

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}); 
    ... 

我想你應該改變你初始化XYMultipleSeriesRenderer的方式。

+0

謝謝山姆,我做了或多或少的鏈接顯示你通過我,現在沒關係圖表顯示不錯,但一些新的問題已出現。我的圖形的背景是白色的,我希望它是黑色的(我認爲我可以修復它),如果圖形的容器視圖的高度設置爲wrap_content,則圖形被限制在其他佈局所留下的空間中,並且不會看到正常。所以我必須設置這個指定的尺寸,比如150dp才能正確顯示,這是否也發生在你身上呢?最後一個問題,我不得不以編程方式調整文本和數字的大小,因爲它們傾向於重疊。再次感謝Sam – JoeCoolman

+0

@JoeCoolman,我沒有看到您的應用程序,但爲什麼'wrap_content'?這裏不是'fill_parent'好嗎?對不起,如果我誤解你的意圖。還要看看他們自己的示例代碼,看看他們使用了什麼樣的佈局。 [achartengine-1.1.0-demo-source.zip](https://code.google.com/p/achartengine/downloads/detail?name=achartengine-1.1.0-demo-source.zip&can=2&q=) –

+1

我想顯示圖形以及一些其他信息和額外數據,而不僅僅是圖表。好的,薩姆非常感謝你的見解。 – JoeCoolman