android截取屏幕图片
2472 点击·0 回帖
![]() | ![]() | |
![]() | package com.iceman.printscreen; import java.io.File; import java.io.FileOutputStream; import Android.app.Activity; import Android.graphics.Bitmap; import Android.graphics.Bitmap.Config; import Android.os.Bundle; import Android.os.Environment; import Android.view.Display; import Android.view.LayoutInflater; import Android.view.View; import Android.view.View.OnClickListener; import Android.view.WindowManager; import Android.widget.Button; import Android.widget.LinearLayout; import Android.widget.Toast; public class PrintScreenDemoActivity extends Activity { private Button mButton; private LinearLayout mLayout; private int mPrintNum; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LayoutInflater inf = this.getLayoutInflater(); mLayout = (LinearLayout)inf.inflate(R.layout.main, null); setContentView(mLayout); mButton = (Button)findViewById(R.id.print_btn); mButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { GetandSaveCurrentImage(); mPrintNum++; mButton.setText("截屏次数:"+mPrintNum); } }); } private void GetandSaveCurrentImage() { //1.构建Bitmap WindowManager windowManager = getWindowManager(); Display display = windowManager.getDefaultDisplay(); int w = display.getWidth(); int h = display.getHeight(); Bitmap Bmp = Bitmap.createBitmap( w, h, Config.ARGB_8888 ); //2.获取屏幕 View decorview = this.getWindow().getDecorView(); decorview.setDrawingCacheEnabled(true); Bmp = decorview.getDrawingCache(); String SavePath = getSDCardPath()+"/PrintScreenDemo/ScreenImage"; //3.保存Bitmap try { File path = new File(SavePath); //文件 String filepath = SavePath + "/Screen_"+mPrintNum+".png"; File file = new File(filepath); if(!path.exists()){ path.mkdirs(); } if (!file.exists()) { file.createNewFile(); } FileOutputStream fos = null; fos = new FileOutputStream(file); if (null != fos) { Bmp.compress(Bitmap.CompressFormat.PNG, 90, fos); fos.flush(); fos.close(); Toast.makeText(this, "截屏文件已保存至SDCard/PrintScreenDemo/ScreenImage/下", Toast.LENGTH_LONG).show(); } } catch (Exception e) { e.printStackTrace(); } } /** * 获取SDCard的目录路径功能 * @return */ private String getSDCardPath(){ File sdcardDir = null; //判断SDCard是否存在 boolean sdcardExist = Environment.getExternalStorageState().equals(Android.os.Environment.MEDIA_MOUNTED); if(sdcardExist){ sdcardDir = Environment.getExternalStorageDirectory(); } return sdcardDir.toString(); } } 布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android" Android:layout_width="fill_parent" Android:layout_height="fill_parent" Android:orientation="vertical" > <Button Android:id="@+id/print_btn" Android:layout_width="fill_parent" Android:layout_height="wrap_content" Android:text="截屏" /> </LinearLayout> 由于是把截屏的图片存放到sd卡里,所以要在manifest.xml文件中增加对sd卡的写入权限. | |
![]() | ![]() |