- 首先写个工具类:
- 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();
- }
- }
- });
- }
- }
来源: http://www.phpxs.com/code/1001840/