Android 实现截屏功能的实例
Android实现截屏功能的实例
实现代码:
publicclassScreenShot{ //获取指定Activity的截屏,保存到png文件 privatestaticBitmaptakeScreenShot(Activityactivity){ //View是你需要截图的View Viewview=activity.getWindow().getDecorView(); view.setDrawingCacheEnabled(true); view.buildDrawingCache(); Bitmapb1=view.getDrawingCache(); //获取状态栏高度 Rectframe=newRect(); activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame); intstatusBarHeight=frame.top; Log.i("TAG",""+statusBarHeight); //获取屏幕长和高 intwidth=activity.getWindowManager().getDefaultDisplay().getWidth(); intheight=activity.getWindowManager().getDefaultDisplay() .getHeight(); //去掉标题栏 //Bitmapb=Bitmap.createBitmap(b1,0,25,320,455); Bitmapb=Bitmap.createBitmap(b1,0,statusBarHeight,width,height -statusBarHeight); view.destroyDrawingCache(); returnb; } //保存到sdcard privatestaticvoidsavePic(Bitmapb,StringstrFileName){ FileOutputStreamfos=null; try{ fos=newFileOutputStream(strFileName); if(null!=fos){ b.compress(Bitmap.CompressFormat.PNG,90,fos); fos.flush(); fos.close(); } }catch(FileNotFoundExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); } } //程序入口 publicstaticvoidshoot(Activitya){ ScreenShot.savePic(ScreenShot.takeScreenShot(a),"sdcard/xx.png"); } }
需要注意的是,shoot方法只能在view已经被加载后方可调用。
或者在 以下方法这里调用。
@Override publicvoidonWindowFocusChanged(booleanhasFocus){ //TODOAuto-generatedmethodstub super.onWindowFocusChanged(hasFocus); ScreenShot.shoot(this); }
以上就是Android截屏的实例,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!