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; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。