我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android中通过view方式获取当前Activity的屏幕截图实现方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android中通过view方式获取当前Activity的屏幕截图实现方法

此方法是通过view的方式获取当前activity的屏幕截图,并不是framebuffer的方式,所以有一定的局限性。但是这种方法相对简单,容易理解。

首先通过下面的函数获取Bitmap格式的屏幕截图:

代码如下:
public Bitmap myShot(Activity activity) {
// 获取windows中最顶层的view
View view = activity.getWindow().getDecorView();
view.buildDrawingCache();
// 获取状态栏高度
Rect rect = new Rect();
view.getWindowVisibleDisplayFrame(rect);
int statusBarHeights = rect.top;
Display display = activity.getWindowManager().getDefaultDisplay();
// 获取屏幕宽和高
int widths = display.getWidth();
int heights = display.getHeight();
// 允许当前窗口保存缓存信息
view.setDrawingCacheEnabled(true);
// 去掉状态栏
Bitmap bmp = Bitmap.createBitmap(view.getDrawingCache(), 0,
statusBarHeights, widths, heights – statusBarHeights);
// 销毁缓存信息
view.destroyDrawingCache();
return bmp;
}

得到bitmap格式的图片后,可以把它保存到sd卡中,也可以用下面的方式直接显示到ImageView上:

代码如下:
// 将bitmap转换成drawable
BitmapDrawable bd=new BitmapDrawable(myShot());
imageView.setBackgroundDrawable(bd);
imageView.setImageBitmap(myShot());

如果想写入sd中保存,可以使用下面的方法:

代码如下:
private void saveToSD(Bitmap bmp, String dirName,String fileName) throws IOException {
// 判断sd卡是否存在
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
File dir = new File(dirName);
// 判断文件夹是否存在,不存在则创建
if(!dir.exists()){
dir.mkdir();
}
File file = new File(dirName + fileName);
// 判断文件是否存在,不存在则创建
if (!file.exists()) {
file.createNewFile();
}
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
if (fos != null) {
// 第一参数是图片格式,第二个是图片质量,第三个是输出流
bmp.compress(Bitmap.CompressFormat.PNG, 100, fos);
// 用完关闭
fos.flush();
fos.close();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

dirName是输出的文件夹名称,filaName是输出的文件名,两者共同组成输出的路径,如“ /mnt/sdcard/pictures/shot.png”。还要注意在AndroidManifest中注册写入权限:

代码如下:
<uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE” />

您可能感兴趣的文章:Android 5.0及以上编程实现屏幕截图功能的方法Android给scrollView截图超过屏幕大小形成长图Android屏幕及view的截图实例详解Android获取常用辅助方法(获取屏幕高度、宽度、密度、通知栏高度、截图)Android实现屏幕截图并保存截图到指定文件


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android中通过view方式获取当前Activity的屏幕截图实现方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android中通过view方式获取当前Activity的屏幕截图实现方法

此方法是通过view的方式获取当前activity的屏幕截图,并不是framebuffer的方式,所以有一定的局限性。但是这种方法相对简单,容易理解。 首先通过下面的函数获取Bitmap格式的屏幕截图:代码如下: public Bitmap
2022-06-06

android获得当前view在屏幕中坐标的方法

本文实例讲述了android获得当前view在屏幕中坐标的方法。分享给大家供大家参考。具体如下:final int[] location = new int[2]; view.getLocationOnScreen(location);这样
2022-06-06

Android编程实现横竖屏切换时不销毁当前activity和锁定屏幕的方法

本文实例讲述了Android编程实现横竖屏切换时不销毁当前activity和锁定屏幕的方法。分享给大家供大家参考,具体如下: 首先在Mainifest.xml的Activity元素中加入android:configChanges="orie
2022-06-06

Android应用中实现截取手机屏幕的方法有哪些

这篇文章给大家介绍Android应用中实现截取手机屏幕的方法有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。方法1:首先想到的思路是利用SDK提供的View.getDrawingCache()方法: public
2023-05-31

Android中通过样式来去除app的头及界面全屏(备忘)的实现方法

在style中如下面那样定义: