Android实现屏幕截图并保存截图到指定文件
Android屏幕截图并保存截取屏幕的图片到指定文件,具体内容如下
注意要添加权限:
完整代码:
packagezhangphil.test;
importandroid.app.Activity;
importandroid.content.Context;
importandroid.content.res.Resources;
importandroid.graphics.Bitmap;
importandroid.os.Bundle;
importandroid.os.Environment;
importandroid.support.annotation.Nullable;
importandroid.support.v7.app.AppCompatActivity;
importandroid.util.DisplayMetrics;
importandroid.view.View;
importandroid.widget.Toast;
importjava.io.BufferedOutputStream;
importjava.io.File;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.OutputStream;
publicclassJavaActivityextendsAppCompatActivity{
@Override
protectedvoidonCreate(@NullableBundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.drawable_activity);
AppCompatActivityactivity=this;
findViewById(R.id.button).setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
Filefile=newFile(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),"zhangphil.jpg");
Bitmapbitmap=screenShot(activity);
try{
if(!file.exists())
file.createNewFile();
booleanret=save(bitmap,file,Bitmap.CompressFormat.JPEG,true);
if(ret){
Toast.makeText(getApplicationContext(),"截图已保持至"+file.getAbsolutePath(),Toast.LENGTH_SHORT).show();
}
}catch(Exceptione){
e.printStackTrace();
}
}
});
}
/**
*保存图片到文件File。
*
*@paramsrc源图片
*@paramfile要保存到的文件
*@paramformat格式
*@paramrecycle是否回收
*@returntrue成功false失败
*/
publicstaticbooleansave(Bitmapsrc,Filefile,Bitmap.CompressFormatformat,booleanrecycle){
if(isEmptyBitmap(src))
returnfalse;
OutputStreamos;
booleanret=false;
try{
os=newBufferedOutputStream(newFileOutputStream(file));
ret=src.compress(format,100,os);
if(recycle&&!src.isRecycled())
src.recycle();
}catch(IOExceptione){
e.printStackTrace();
}
returnret;
}
/**
*获取当前屏幕截图,不包含状态栏(StatusBar)。
*
*@paramactivityactivity
*@returnBitmap
*/
publicstaticBitmapscreenShot(Activityactivity){
Viewview=activity.getWindow().getDecorView();
view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
Bitmapbmp=view.getDrawingCache();
intstatusBarHeight=getStatusBarHeight(activity);
intwidth=(int)getDeviceDisplaySize(activity)[0];
intheight=(int)getDeviceDisplaySize(activity)[1];
Bitmapret=Bitmap.createBitmap(bmp,0,statusBarHeight,width,height-statusBarHeight);
view.destroyDrawingCache();
returnret;
}
publicstaticfloat[]getDeviceDisplaySize(Contextcontext){
Resourcesresources=context.getResources();
DisplayMetricsdm=resources.getDisplayMetrics();
intwidth=dm.widthPixels;
intheight=dm.heightPixels;
float[]size=newfloat[2];
size[0]=width;
size[1]=height;
returnsize;
}
publicstaticintgetStatusBarHeight(Contextcontext){
intheight=0;
intresourceId=context.getResources().getIdentifier("status_bar_height","dimen","android");
if(resourceId>0){
height=context.getResources().getDimensionPixelSize(resourceId);
}
returnheight;
}
/**
*Bitmap对象是否为空。
*/
publicstaticbooleanisEmptyBitmap(Bitmapsrc){
returnsrc==null||src.getWidth()==0||src.getHeight()==0;
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。