有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何:将画布保存为SD卡上的图像,并始终保留第一张图片

我正在创建一个安卓应用程序,其目的如下:

  • 将画布另存为SD卡上的图像
  • 始终保留第一张照片,即使在我清洁后(使用ClearPaint按钮)
  • 绘制一张新图片将再次保留上一张图片

代码:

Button Colorpaint = (Button) findViewById(R.id.color);
Colorpaint.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

    int _color = R.color.red;
    new PickerDialog(v.getContext(),new OnColorChangedListener()  {

             public void colorChanged(int color) {
              mPaint.setColor(color);
              Log.i("TAG", "mpaint one" +mPaint);
              }
          }, mPaint.getColor(), _color).show();
          Log.i("TAG", "mpaint two" +mPaint);
   }
  });  

    ClearPaint = (Button) findViewById(R.id.ClearPaint);
  ClearPaint.setOnClickListener(new OnClickListener() {

   public void onClick(View v) {

    mBitmap.eraseColor(Color.TRANSPARENT); 
    mPath.reset();
    mView.invalidate(); 


   }
  });



    btn_shoot = (Button)findViewById(R.id.btn_shoot);
  btn_shoot.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

                View view = findViewById(R.id.item);
                view.setDrawingCacheEnabled(true);
              Bitmap bitmap = view.getDrawingCache();
              BitmapDrawable bitmapDrawable = new BitmapDrawable(bitmap);

              if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
                //we check if external storage is available, otherwise display an error message to the user

                   File sdCard = Environment.getExternalStorageDirectory();
                   File directory = new File (sdCard.getAbsolutePath() + "/Basketball_Coach_Board");
                   directory.mkdirs();

                   String filename = "tactics" + i + ".jpg"; 
                   File yourFile = new File(directory, filename);

                   while (yourFile.exists()) {
                    i++;   
                    filename = "tactics" + i + ".jpg"; 
                        yourFile = new File(directory, filename);
                       } 

                   if (!yourFile.exists()) {
                       if (directory.canWrite())
                       {
                           try {
                             FileOutputStream out = new FileOutputStream(yourFile, true);
                             bitmap.compress(Bitmap.CompressFormat.PNG, 90, out);
                             out.flush();
                             out.close();
                             Toast.makeText(MainActivity.this, "Tactics saved at /sdcard/Basketball_Coach_Board/tactics" + i + ".jpg", Toast.LENGTH_SHORT).show();
                             i++;
                            } catch (IOException e) {
                           e.printStackTrace();
                        }

                       }
                   }

                }
                else
                {
                   Toast.makeText(MainActivity.this, "SD Card not available!", Toast.LENGTH_SHORT).show();
                }


        }
    });

共 (1) 个答案

  1. # 1 楼答案

    我猜这是因为在成功拍摄照片后,您没有使用以下命令将图形缓存重置为false:view.setDrawingCacheEnabled(false);