Android手機截屏代碼
首先寫個工具類:public class ScreenShotTool { private Activity activity; public ScreenShotTool(Activity activity) { this.activity = activity; }
public Bitmap getActivityBitmap() { /取得DecorView,這個View是你需要截圖的界面*/ View view = activity.getWindow().getDecorView(); view.setDrawingCacheEnabled(true); /建立圖片緩存/ view.buildDrawingCache(); Bitmap b1 = view.getDrawingCache(); /**獲取狀態欄高度/ Rect frame = new Rect(); activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame); int statusBarHeight = frame.top; /獲取屏幕寬和高*/ int width = activity.getWindowManager().getDefaultDisplay().getWidth(); int height = activity.getWindowManager().getDefaultDisplay().getHeight(); /保存前去掉標題欄/ Bitmap b = Bitmap.createBitmap(b1, 0, statusBarHeight, width, height - statusBarHeight); /**清除緩存/ view.destroyDrawingCache(); return b; }
/保存到本地*/ private void compressBitmap(Bitmap b, File filePath) { FileOutputStream fos = null; try { fos = new FileOutputStream(filePath); if (null != fos) { /對圖片進行壓縮*/ b.compress(Bitmap.CompressFormat.PNG, 100, fos); fos.flush(); fos.close(); } } catch (Exception e) { e.printStackTrace(); } }
public void saveScreenshopBitmap(File filePath) { if (filePath == null) { return; } if (!filePath.exists()) { try { filePath.createNewFile(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } compressBitmap(getActivityBitmap(), filePath); } }
--------------在activit中使用-----------
public class ScreenShotActivity extends Activity { private Button saveBtn; private Activity act; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_photo); saveBtn=(Button) findViewById(R.id.photo_btn); act=this; saveBtn.setOnClickListener(new OnClickListener() {
@Override public void onClick(View v) { /保存路徑*/ String savePath = Environment.getExternalStorageDirectory()+"/ldm/myImages"; try {
File filePath = new File(savePath);
if(!filePath.exists()){
filePath.mkdirs();
}
/文件路徑/ String filepath = savePath + "/today.png";
File file = new File(filepath);
if (!file.exists()) {
file.createNewFile();
} /**把當前Activity截屏,也可以傳入其它Activity/ new ScreenShotTool(act).saveScreenshopBitmap(file); }catch(Exception e){ e.printStackTrace(); } } }); } }</pre>