android实现截图功能

本文介绍了一种在Android应用中实现屏幕截图的方法,并将其保存到SD卡的具体实现过程。通过获取窗口视图并利用Bitmap来缓存屏幕内容,进而裁剪去除状态栏部分,最终将截取的图片以PNG格式保存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    在android中实现截图,然后将其保存在sdcard中实现对于自己比较喜欢的网页的一个保存。

public class ShotPicture {


/**
* @param args

*/ 
   /** 
    * 进行截取屏幕   
    * @param pActivity 
    * @return bitmap 
    */  
   public static  Bitmap takeScreenShot(MainActivity pActivity)  
   {  
       Bitmap bitmap=null;  
       View view=pActivity.getWindow().getDecorView();  //该类是用来截图
       // 设置是否可以进行绘图缓存  
       view.setDrawingCacheEnabled(true);  
       // 如果绘图缓存无法,强制构建绘图缓存  
       view.buildDrawingCache();  
       // 返回这个缓存视图   
       bitmap=view.getDrawingCache();   
       // 获取状态栏高度  
       Rect frame=new Rect();  
       // 测量屏幕宽和高  
       view.getWindowVisibleDisplayFrame(frame);  
       int stautsHeight=frame.top;  
       Log.d("torrent", "状态栏的高度为:"+stautsHeight);  
       int width=pActivity.getWindowManager().getDefaultDisplay().getWidth();  
       int height=pActivity.getWindowManager().getDefaultDisplay().getHeight();  
       // 根据坐标点和需要的宽和高创建bitmap  
       bitmap=Bitmap.createBitmap(bitmap, 0, stautsHeight, width, height-stautsHeight);  
       return bitmap;  
   }  
     
   /** 
    * 保存图片到sdcard中 
    * @param pBitmap 
    */  
   public static boolean savePic(Bitmap pBitmap,String strName)  
   {  
     FileOutputStream fos=null;  //定义一个文件输出流对象
     try {  
       fos=new FileOutputStream(strName);  
       if(null!=fos)  
       {  
           pBitmap.compress(Bitmap.CompressFormat.PNG, 90, fos);  
           fos.flush();  
           fos.close();  
           return true;  
       }  
         
   } catch (FileNotFoundException e) {  
       e.printStackTrace();  
   }catch (IOException e) {  
       e.printStackTrace();  
   }  
     return false;  
   }   
   /** 
    * 截图 
    * @param pActivity  
    * @return 截图并且保存sdcard成功返回true,否则返回false 
    */  
   public static boolean shotBitmap(MainActivity pActivity)  
   {  
         
       return  ShotPicture.savePic(takeScreenShot(pActivity), "sdcard/"+System.currentTimeMillis()+".png");  
   }  

         //以当前系统的时间作为所截取图片的名字,格式是png格式
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值