2016-02-27 210 views
0

每當我點擊一次takescreenshot按鈕它卡住,並不斷採取截圖。屏幕截圖按住屏幕截圖時卡住

停止按鈕

這個按鈕的功能是停止線程,並從截屏停止代碼。

Thread th = new Thread(new Runnable() { 
    @Override 
    public void run() { 
     StopThread.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       thread.interrupt(); 
       check=false; 
       //textView.setText(TotalShots); 
      } 
     }); 
    } 
}); 
th.start(); 

抓圖按鈕

這個按鈕的功能是啓動線程,並開始採取截圖。

public void screenShot(View view) throws IOException { 
     thread = new Thread(new Runnable() { 
      @Override 
      public void run() { 
        runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
          if (!Thread.interrupted()){ 

           while (check) 
           { 
            captureScreenShot = (Button) findViewById(R.id.capture_screen_shot); 
            c = Calendar.getInstance(); 
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 
            name = simpleDateFormat.format(c.getTime()); 
            mbitmap = getBitmapOFRootView(captureScreenShot); 
            imageView.setImageBitmap(mbitmap); 
            try { 
             createImage(mbitmap); 
            } catch (IOException e) { 
             e.printStackTrace(); 
            } 


           } 
          } 

         } 
        }); 
      } 
     }); 
     thread.start(); 
    } 

點擊查看UI of App

回答

0

而無需啓動線程或喜歡,你可以按一下按鈕簡單的調用方法。而不是設置比位圖內的位圖或任何你想要使用該位圖。

volatile boolean flag = true;

public void run() 
{ 
while(flag) 
    {  
    // Do your task of calling method of screenshot 
    try{ 
     Thread.Sleep(interval); 
    } catch(Exception e){ 

     } 

    } 
} 

當您單擊停止按鈕時設置標誌爲false。

public Bitmap takeScreenShot(View view) { 

// configuramos para que la view almacene la cache en una imagen 
view.setDrawingCacheEnabled(true); 
view.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_LOW); 
view.buildDrawingCache(); 

if(view.getDrawingCache() == null) return null; // Verificamos antes de que no sea null 

// utilizamos esa cache, para crear el bitmap que tendra la imagen de la view actual 
Bitmap snapshot = Bitmap.createBitmap(view.getDrawingCache()); 
view.setDrawingCacheEnabled(false); 
view.destroyDrawingCache(); 

return snapshot; 
} 
+0

我想要代碼繼續截圖,直到按下停止按鈕。 –

+0

仍然存在問題。它不允許我按停止按鈕。 –