如何在Android里面使用代码截屏

2025-04-18 15:01:56
推荐回答(2个)
回答1:

/**
* 获取和保存当前屏幕的截图
*/
private void GetandSaveCurrentImage()  
{  
//构建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 );      
//获取屏幕  
View decorview = this.getWindow().getDecorView();   
decorview.setDrawingCacheEnabled(true);   
Bmp = decorview.getDrawingCache();   
//图片存储路径
String SavePath = getSDCardPath()+"/Demo/ScreenImages";
//保存Bitmap   
try {  
File path = new File(SavePath);  
//文件  
String filepath = SavePath + "/Screen_1.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(mContext, "截屏文件已保存至SDCard/ScreenImages/目录下",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();
}

回答2:

方法是获取当前的view,然后保存为图片

public class ScreenShot {
// 获取指定Activity的截屏,保存到png文件
String filenameTemp ="/mnt/sdcard/temp";
private static Bitmap takeScreenShot(Activity activity)
{
// View是你需要截图的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;
Log.i("TAG", "" + statusBarHeight);

// 获取屏幕长和高
int width = activity.getWindowManager().getDefaultDisplay().getWidth();
int height = activity.getWindowManager().getDefaultDisplay()
.getHeight();
// 去掉标题栏
// Bitmap b = Bitmap.createBitmap(b1, 0, 25, 320, 455);
Bitmap b = Bitmap.createBitmap(b1, 0, statusBarHeight, width, height
- statusBarHeight);
view.destroyDrawingCache();
return b;
}