这是我的代码的一部分,如果我在其他代码中的另一个活动中使用该代码,例如:
case R.id.buttonMinus:
在哪里,而不是graphView,我使用标准视图(例如,代码可能如下所示:
public void onClick(View v) {
v.buildDrawingCache();
Bitmap bm=v.getDrawingCache();
(其余相同))它工作得很好,它只保存该特定按钮的背景。如果我在 graphView 中使用它,它总是以“Error1”结束(它在尝试压缩位图时捕获异常)。
(Graphview 是将图形绘制到画布中的视图)
我整天都被困在这个问题上,如果有人可以提供帮助,请提前致谢!(我没有忘记添加
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
到清单)
我的代码:
...
buttonClick.performClick();
}
public void onClick(View v) {
String[] verlabels = new String[] {"0m", Float.toString(-max/2) + "m", Float.toString(-max) + "m"};
String[] horlabels = new String[] {"0 min",Float.toString((int)x[pocetBodu]/2)+" min",Float.toString((int)x[pocetBodu])+" min"};
GraphView graphView = new GraphView(this, y, "Dive Manager",horlabels, verlabels, GraphView.LINE,x,Pspotreba,pocetBodu,pocetUseku);
setContentView(graphView);
if(Save)
{
graphView.setDrawingCacheEnabled(true);
graphView.buildDrawingCache();
Bitmap bm=graphView.getDrawingCache();
OutputStream fOut = null;
Uri outputFileUri;
try {
File root = new File(Environment.getExternalStorageDirectory()+ File.separator + "DivePlanner" + File.separator);
root.mkdirs();
File sdImageMainDirectory = new File(root, "Dive.png");
outputFileUri = Uri.fromFile(sdImageMainDirectory);
fOut = new FileOutputStream(sdImageMainDirectory);
}
catch (Exception e) {
Toast.makeText(this, "Error", 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, "Error1", Toast.LENGTH_SHORT).show();
}
}
我正在画布上绘制图表。最终,我希望能够通过将该视图导出为 PNG 图像来保存该图形。我正在通过其他活动加载。如果我尝试通过上面的代码保存它,它总是会捕获异常并抛出错误 1。该文件永远不会创建和保存。当我在 onClick 视图中执行此操作(作为测试)时(例如 public void onClick(View v) v.buildDrawingCache(); ...)它起作用了,只保存了一个按钮图像,使用 graphView 它不起作用