Android实现截取当前屏幕图片并保存至SDCard

功能

1. 实现截取当前屏幕的功能。

2. 把截取的图片保存到SDCard中的某个目录文件夹下面。

 

Java代码

 

[java][/java] view plaincopy

  1. package com.app.test01;
  2. import java.io.File;
  3. import java.io.FileOutputStream;
  4. import android.app.Activity;
  5. import android.graphics.Bitmap;
  6. import android.graphics.Bitmap.Config;
  7. import android.os.Bundle;
  8. import android.os.Environment;
  9. import android.view.Display;
  10. import android.view.View;
  11. import android.view.View.OnClickListener;
  12. import android.view.WindowManager;
  13. import android.widget.Button;
  14. import android.widget.Toast;
  15. public class JieTu extends Activity {
  16.     private Button btnButton;
  17.     @Override
  18.     protected void onCreate(Bundle savedInstanceState) {
  19.         // TODO Auto-generated method stub
  20.         super.onCreate(savedInstanceState);
  21.         setContentView(R.layout.jietu);
  22.         btnButton = (Button) findViewById(R.id.button1);
  23.         btnButton.setOnClickListener(new OnClickListener() {
  24.             @Override
  25.             public void onClick(View v) {
  26.                 // TODO Auto-generated method stub
  27.                 GetandSaveCurrentImage();
  28.             }
  29.         });
  30.     }
  31.     /**
  32.      * 获取和保存当前屏幕的截图
  33.      */
  34.     private void GetandSaveCurrentImage() {
  35.         // 1.构建Bitmap
  36.         WindowManager windowManager = getWindowManager();
  37.         Display display = windowManager.getDefaultDisplay();
  38.         int w = display.getWidth();
  39.         int h = display.getHeight();
  40.         Bitmap Bmp = Bitmap.createBitmap(w, h, Config.ARGB_8888);
  41.         // 2.获取屏幕
  42.         View decorview = this.getWindow().getDecorView();
  43.         decorview.setDrawingCacheEnabled(true);
  44.         Bmp = decorview.getDrawingCache();
  45.         String SavePath = getSDCardPath() + “/AndyDemo/ScreenImage”;
  46.         // 3.保存Bitmap
  47.         try {
  48.             File path = new File(SavePath);
  49.             // 文件
  50.             String filepath = SavePath + “/Screen_1.png”;
  51.             File file = new File(filepath);
  52.             if (!path.exists()) {
  53.                 path.mkdirs();
  54.             }
  55.             if (!file.exists()) {
  56.                 file.createNewFile();
  57.             }
  58.             FileOutputStream fos = null;
  59.             fos = new FileOutputStream(file);
  60.             if (null != fos) {
  61.                 Bmp.compress(Bitmap.CompressFormat.PNG, 90, fos);
  62.                 fos.flush();
  63.                 fos.close();
  64.                 Toast.makeText(this, “截屏文件已保存至SDCard/AndyDemo/ScreenImage/下”,
  65.                         Toast.LENGTH_LONG).show();
  66.             }
  67.         } catch (Exception e) {
  68.             e.printStackTrace();
  69.         }
  70.     }
  71.     /**
  72.      * 获取SDCard的目录路径功能
  73.      */
  74.     private String getSDCardPath() {
  75.         File sdcardDir = null;
  76.         // 判断SDCard是否存在
  77.         boolean sdcardExist = Environment.getExternalStorageState().equals(
  78.                 android.os.Environment.MEDIA_MOUNTED);
  79.         if (sdcardExist) {
  80.             sdcardDir = Environment.getExternalStorageDirectory();
  81.         }
  82.         return sdcardDir.toString();
  83.     }
  84. }

 

添加读写权限

由于要对SDCard进行操作,所以别忘记了在manifest.xml文件中赋以对SDCard的读写权限:

 

[html][/html] view plaincopy

  1. <uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE”/>

 

标签