簡體   English   中英

Android使用toBitmap()將圖形(AChartEngine)轉換為圖像

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM