Android手機截屏代碼

fydxdk 9年前發布 | 1K 次閱讀 Java 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>

 本文由用戶 fydxdk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!