标签:des android blog io os 使用 ar java for
步骤:
第一步:获取保存屏幕图像的Bitmap对象;
第二步 得到状态栏的高度;
第三步 获取屏幕图像的高度;
第四步 创建新的Bitmap对象 并截取除了状态栏的其他区域;
第五步 将屏幕图像保存到sd卡的根目录
代码如下:
package com.example.activityproperty;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Point;
import android.graphics.Rect;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@SuppressLint("NewApi") public void onClick_CaptureScreen(View view) {
// 使用延迟运行 ,防止单击按钮时还没有抬起就截取屏幕图像
new Handler().postDelayed(new Runnable() {
@SuppressLint("NewApi") @Override
public void run() {
// 获取窗口的顶层视图对象
View v = getWindow().getDecorView();
v.setDrawingCacheEnabled(true);
v.buildDrawingCache();
// 第一步:获取保存屏幕图像的Bitmap对象
Bitmap srcBitmap = v.getDrawingCache();
Rect frame = new Rect();
// decorView是window中的最顶层view,可以从window中获取到decorView,然后decorView有个getWindowVisibleDisplayFrame方法可以获取到程序显示的区域,包括标题栏,但不包括状态栏。
getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
// 第二步 得到状态栏的高度
int statusHeight = frame.top;
// 第三步 获取屏幕图像的高度
Point outSize = new Point();
getWindowManager().getDefaultDisplay().getSize(outSize);
int width = outSize.x;
int height = outSize.y;
// 第四步 创建新的Bitmap对象 并截取除了状态栏的其他区域
Bitmap bitmap = Bitmap.createBitmap(srcBitmap, 0, statusHeight,
width, height - statusHeight);
v.destroyDrawingCache();
FileOutputStream fos = null;
try {
File file = File.createTempFile("capture", ".jpg",
new File("/sdcard"));
fos = new FileOutputStream(file);
if (null != fos) {
// 第五步 :将屏幕图像保存到sd卡的根目录
bitmap.compress(Bitmap.CompressFormat.PNG, 90, fos);
fos.flush();
Toast.makeText(MainActivity.this,
"保存成功" + file.getName(), 0).show();
}else{
Toast.makeText(MainActivity.this,"失败", 0).show();
}
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}, 2000);
}
}
标签:des android blog io os 使用 ar java for
原文地址:http://blog.csdn.net/eeeduo/article/details/40041709