文字通り何でもやってみたような気がします。最後に頭に浮かぶのは、getDrawingCacheを実行するためにrootが必要ですか?私がそれで遊んでいて、onClickの別のアクティビティでそれを試したときにこれがうまくいったので(ボタンの背景だけを保存したとしても)、私はすべきではないと思います。GraphViewは、Canvasにグラフをペイントするクラスです。追加するのを忘れていません
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
bm.compress(Bitmap.CompressFormat.PNG、100、fOut);だけを使用しようとしました。tryとcatchがないと、null例外が発生します。
コードは次のとおりです。
GraphView graphView = new GraphView(this, y, "Dive Planner", horlabels, verlabels, GraphView.LINE, x, Pspotreba, pocetBodu, varovani);
setContentView(graphView);
graphView.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
graphView.layout(0, 0, graphView.getMeasuredWidth(), graphView.getMeasuredHeight());
graphView.setDrawingCacheEnabled(true);
graphView.buildDrawingCache();
Bitmap bm=Bitmap.createBitmap(graphView.getDrawingCache(true));
//I have also tried Bitmap bm=graphView.getDrawingCache(true); and all the combinations (using/not using the code above)
FileOutputStream fOut = null;
try {
File f = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+ File.separator + "DivePlanner" + File.separator);
if(!f.exists()) f.mkdirs();
File dive = new File(f, "Dive.png");
fOut = new FileOutputStream(dive);
}
catch (Exception e) {
Toast.makeText(this, "Error2", Toast.LENGTH_SHORT).show();
}
try {
bm.compress(Bitmap.CompressFormat.PNG, 100, fOut);
fOut.flush();
fOut.close();
Toast.makeText(this, "Ponor uložen", Toast.LENGTH_SHORT).show();
}
catch (Exception e)
{
Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show();
}
同様の質問を投稿して申し訳ありません(私は以前にこのような質問を投稿しましたが、質問は未解決のままです。おそらく十分に説明していなかったので、ここで新しい試みをします)。これは、私が学士論文で終える必要がある最後のことです。次の火曜日までに準備する必要があります。これを除いて、他のすべては私のコードでうまく機能します。よろしければ、よろしくお願いします。