zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

Android中截取当前屏幕图片的实例代码

Android实例代码 图片 当前 屏幕 截取
2023-06-13 09:15:04 时间

复制代码代码如下:


/**
    *获取和保存当前屏幕的截图
    */
   privatevoidGetandSaveCurrentImage() 
   { 
       //1.构建Bitmap 
       WindowManagerwindowManager=getWindowManager(); 
       Displaydisplay=windowManager.getDefaultDisplay(); 
       intw=display.getWidth(); 
       inth=display.getHeight(); 

       BitmapBmp=Bitmap.createBitmap(w,h,Config.ARGB_8888);     

       //2.获取屏幕 
       Viewdecorview=this.getWindow().getDecorView();  
       decorview.setDrawingCacheEnabled(true);  
       Bmp=decorview.getDrawingCache();  

       StringSavePath=getSDCardPath()+"/AndyDemo/ScreenImage";

       //3.保存Bitmap  
       try{ 
           Filepath=newFile(SavePath); 
           //文件 
           Stringfilepath=SavePath+"/Screen_1.png"; 
           Filefile=newFile(filepath); 
           if(!path.exists()){ 
               path.mkdirs(); 
           } 
           if(!file.exists()){ 
               file.createNewFile(); 
           } 

           FileOutputStreamfos=null; 
           fos=newFileOutputStream(file); 
           if(null!=fos){ 
               Bmp.compress(Bitmap.CompressFormat.PNG,90,fos); 
               fos.flush(); 
               fos.close();   

               Toast.makeText(mContext,"截屏文件已保存至SDCard/AndyDemo/ScreenImage/下",Toast.LENGTH_LONG).show(); 
           } 

       }catch(Exceptione){ 
           e.printStackTrace(); 
       } 
   } 

   /**
    *获取SDCard的目录路径功能
    *@return
    */
   privateStringgetSDCardPath(){
       FilesdcardDir=null;
       //判断SDCard是否存在
       booleansdcardExist=Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
       if(sdcardExist){
           sdcardDir=Environment.getExternalStorageDirectory();
       }
       returnsdcardDir.toString();
   }

由于要对SDCard进行操作,所以别忘记了在manifest.xml文件中赋以对SDCard的读写权限:

<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>