![](/img/trans.png)
[英]Colliding point of graph in android by using achartEngine in android
[英]Android converting graph (AChartEngine) into image using toBitmap()
我正在嘗試使用AChartEngine將圖添加到我的Android應用程序中。 與示例唯一不同的是,我想從圖形位圖進行制作,然后插入ImageView
。
我可以將圖形添加到LinearLayout中,而不會出現任何問題,但是在圖形上使用方法toBitmap()
並將其插入ImageView
我什么也沒有,得到NullPointerException
。 我發現的可能問題是生成圖的ID -1 。
這是代碼:
public class Chart extends Activity{
/** The main dataset that includes all the series that go into a chart. */
private XYMultipleSeriesDataset mDataset = new XYMultipleSeriesDataset();
/** The main renderer that includes all the renderers customizing a chart. */
private XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();
/** The most recently added series. */
private XYSeries mCurrentSeries;
/** The most recently created renderer, customizing the current series. */
private XYSeriesRenderer mCurrentRenderer;
/** The chart view that displays the data. */
private GraphicalView mChartView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.widget_layout);
// set some properties on the main renderer
mRenderer.setAxisTitleTextSize(16);
mRenderer.setChartTitleTextSize(20);
mRenderer.setLabelsTextSize(15);
mRenderer.setLegendTextSize(15);
mRenderer.setPointSize(5);
}
@Override
protected void onResume() {
super.onResume();
if (mChartView == null) {
initChart();
addSampleData();
mChartView = ChartFactory.getLineChartView(this, mDataset, mRenderer);
mRenderer.setClickEnabled(true);
mRenderer.setSelectableBuffer(10);
Bitmap img = mChartView.toBitmap();
ImageView imgView = (ImageView)findViewById(R.id.graphView);
imgView.setImageBitmap(img);
} else {
mChartView.repaint();
}
}
}
有人可以告訴我如何生成圖像並將其正常插入嗎?
使用以下代碼將布局轉換為位圖。 我希望這個對你有用。
public class AndroidLayoutImage extends Activity {
ImageView bmImage;
LinearLayout view;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
view = (LinearLayout)findViewById(R.id.screen);
bmImage = (ImageView)findViewById(R.id.image);
view.setDrawingCacheEnabled(true);
// this is the important code :)
// Without it the view will have a dimension of 0,0 and the bitmap will be null
view.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
view.buildDrawingCache(true);
Bitmap b = Bitmap.createBitmap(view.getDrawingCache());
view.setDrawingCacheEnabled(false); // clear drawing cache
bmImage.setImageBitmap(b);
};
這不一定完全可以解決您的問題,但是是否有理由需要它成為位圖? 如果只需要在屏幕上顯示圖形,請考慮采用線性布局,以便將圖形(如果還沒有)放置在xml文件中。 然后,您要做的就是使用以下命令將mChartView添加到該布局:
yourLinearLayout.addView(mChartView)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.