2016-02-23 102 views
0
captureBtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       String folder = "Capture"; 
       try{ 
        SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss"); 
        Date currentTime = new Date(); 
        String dateString = formatter.format(currentTime); 
        File sdCardPath = Environment.getExternalStorageDirectory(); 
        File dirs = new File(Environment.getExternalStorageDirectory(), folder); 

        if (!dirs.exists()) { 
         dirs.mkdirs(); 
        } 
        container.buildDrawingCache(); 
        Bitmap captureView = container.getDrawingCache(); 
        FileOutputStream fos; 
        String save; 
        try { 
         save = sdCardPath.getPath() + "/" + folder + "/" + dateString + ".jpg"; 
         fos = new FileOutputStream(save); 
         captureView.compress(Bitmap.CompressFormat.JPEG, 100, fos); 
         fos.close(); 
         sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, 
           Uri.parse("file://" + sdCardPath.getPath() + "/" + folder + "/" + dateString + ".jpg"))); 
        } catch (FileNotFoundException e) { 
         e.printStackTrace(); 
        } 
        Toast.makeText(getApplicationContext(), dateString + ".jpg 저장", Toast.LENGTH_LONG).show(); 
        recentImageName = "file://" + sdCardPath.getPath() + "/" + folder + "/" + dateString + ".jpg"; 
       } catch (Exception e) { 
       } 
      } 
     }); 

我的應用程序有一些EditText。當我首先在EditText中放入一些單詞並通過按鈕捕捉時,那麼捕捉按鈕效果很好。 但是,當我刪除並在EditText並把新單詞,並按下按鈕,結果與第一次捕獲相同。Android:重複捕獲相同的圖像

我的代碼有什麼問題?

+0

您正在嘗試我的理解捕捉到你的屏幕上的內容?即使你改變了EditText的值,你在屏幕截圖中得到了前一個值。 – pleft

回答

0

你應該叫container.destroyDrawingCache()

之後
container.buildDrawingCache(); 
Bitmap captureView = container.getDrawingCache(); 
container.destroyDrawingCache(); //<---- 
+0

這個效果很好!謝謝。 – HenataJung

0

你需要做以下的事情采取新的形象,每次:以位圖緩存和view.setDrawingCacheEnabled(假)每次調用view.getDrawingCache前後

呼叫view.setDrawingCacheEnabled(真),每次() 。

例子:

view.setDrawingCacheEnabled(true); 
view.buildDrawingCache(true); 
File imageFile = new File(Environment.getExternalStorageDirectory(), 
     "Pictures/image.jpg"); 
FileOutputStream fileOutputStream = new FileOutputStream(imageFile); 
view.getDrawingCache(true).compress(CompressFormat.JPEG, 100, 
     fileOutputStream); 
fileOutputStream.close(); 
imageView.setDrawingCacheEnabled(false); 

你需要setDrawingCacheEnabled(假的),你得到了位圖後。