2013-10-07 3 views
0

Je crée une application Android qui a pour but suivant:Comment: Enregistrer la toile comme image sur la carte SD et conserve toujours la première image

  • Enregistrer la toile comme image sur la carte SD
  • gardez toujours la première image même après nettoyer (avec bouton ClearPaint)
  • Peindre une nouvelle image gardera l'image précédente à nouveau

code:

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(); 
       } 


     } 
    }); 

Répondre

0

Je suppose que cela est dû au fait après avoir pris avec succès l'image que vous ne remettez pas le cache dessin à false avec: view.setDrawingCacheEnabled(false);

Questions connexes