0

何時間もグーグルで調べた後、さまざまな方法を試しました。いくつかの方法は一部の人には役立つようですが、私にとってはそうではありません。ここで何が欠けていますか?もしかして許可?これが一般的なバグか何かであることは知っていますが、解決策があるはずです。

すべての方法は似ています。

初め:

GraphicalView v = ChartFactory.getBarChartView(ChartsDuration.this, buildBarDataset(titles, values), renderer, Type.DEFAULT); 
                    v.setDrawingCacheEnabled(true);
                    v.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);
                    v.buildDrawingCache(true);
                    Bitmap bitmap = Bitmap.createBitmap(v.toBitmap()); //bitmap is null
                    v.setDrawingCacheEnabled(false);

or this:

                    Bitmap bitmap = Bitmap.createBitmap(v.getDrawingCache()); //bitmap is null

私もここで解決策を試しました:

                    v.setDrawingCacheEnabled(true);

                 // this is the important code :)  
                 // Without it the view will have a dimension of 0,0 and the bitmap will be null          
                 v.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 
                             MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
                 v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight()); 

                 v.buildDrawingCache(true);
                 Bitmap b = Bitmap.createBitmap(v.getDrawingCache());
                 v.setDrawingCacheEnabled(false); // clear drawing cache

次に、このページの下部にあるメソッド:

v.setDrawingCacheEnabled(false);
                    if (!v.isDrawingCacheEnabled()) {
                      v.setDrawingCacheEnabled(true);
                    }
                    if (renderer.isApplyBackgroundColor()) {
                      v.setDrawingCacheBackgroundColor(renderer.getBackgroundColor());
                    }
                    v.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);
                    v.getDrawingCache(true);
                    Bitmap b = Bitmap.createBitmap(v.getDrawingCache());

私もこれで運がありませんでした:

   v.setDrawingCacheEnabled(true);
                    v.requestFocus();
                    v.getRootView();


                    v.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
                    MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
                    v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());

                    v.buildDrawingCache(true);
                    Bitmap mBitmap = v.getDrawingCache();

ビットマップは常に null です。

4

1 に答える 1