android常见的屏幕工具,获取屏幕宽高,状态栏高,手机截屏(包括状态栏和不包括状态栏)

Android截屏保存png图片的实例代码(去掉状态栏) 今天开发中遇到了android手机截屏的需求,以下是实现代码: 这是截屏工具类: public class ScreenShot { // 获取指定Activity的截屏,保存到png文件 private static Bitmap takeScreenShot(Activity activity) { // View是你需要截图的View Vi 阅读详情

/**
 * 获得屏幕相关的辅助类
 */
public class ScreenUtils
{
	private ScreenUtils()
	{
		/* cannot be instantiated */
		throw new UnsupportedOperationException("cannot be instantiated");
	}

	/**
	 * 获得屏幕高度
	 * 
	 * @param context
	 * @return
	 */
	public static int getScreenWidth(Context context)
	{
		WindowManager wm = (WindowManager) context
				.getSystemService(Context.WINDOW_SERVICE);
		DisplayMetrics outMetrics = new DisplayMetrics();
		wm.getDefaultDisplay().getMetrics(outMetrics);
		return outMetrics.widthPixels;
	}

	/**
	 * 获得屏幕宽度
	 * 
	 * @param context
	 * @return
	 */
	public static int getScreenHeight(Context context)
	{
		WindowManager wm = (WindowManager) context
				.getSystemService(Context.WINDOW_SERVICE);
		DisplayMetrics outMetrics = new DisplayMetrics();
		wm.getDefaultDisplay().getMetrics(outMetrics);
		return outMetrics.heightPixels;
	}

	/**
	 * 获得状态栏的高度
	 * 
	 * @param context
	 * @return
	 */
	public static int getStatusHeight(Context context)
	{

		int statusHeight = -1;
		try
		{
			Class<?> clazz = Class.forName("com.android.internal.R$dimen");
			Object object = clazz.newInstance();
			int height = Integer.parseInt(clazz.getField("status_bar_height")
					.get(object).toString());
			statusHeight = context.getResources().getDimensionPixelSize(height);
		} catch (Exception e)
		{
			e.printStackTrace();
		}
		return statusHeight;
	}

	/**
	 * 获取当前屏幕截图,包含状态栏
	 * 
	 * @param activity
	 * @return
	 */
	public static Bitmap snapShotWithStatusBar(Activity activity)
	{
		View view = activity.getWindow().getDecorView();
		view.setDrawingCacheEnabled(true);
		view.buildDrawingCache();
		Bitmap bmp = view.getDrawingCache();
		int width = getScreenWidth(activity);
		int height = getScreenHeight(activity);
		Bitmap bp = null;
		bp = Bitmap.createBitmap(bmp, 0, 0, width, height);
		view.destroyDrawingCache();
		return bp;

	}

	/**
	 * 获取当前屏幕截图,不包含状态栏
	 * 
	 * @param activity
	 * @return
	 */
	public static Bitmap snapShotWithoutStatusBar(Activity activity)
	{
		View view = activity.getWindow().getDecorView();
		view.setDrawingCacheEnabled(true);
		view.buildDrawingCache();
		Bitmap bmp = view.getDrawingCache();
		Rect frame = new Rect();
		activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
		int statusBarHeight = frame.top;

		int width = getScreenWidth(activity);
		int height = getScreenHeight(activity);
		Bitmap bp = null;
		bp = Bitmap.createBitmap(bmp, 0, statusBarHeight, width, height
				- statusBarHeight);
		view.destroyDrawingCache();
		return bp;

	}
}

Android之MediaProjectionManager实现手机截屏总结 比较好的文章: Android中使用代码截图的各种方法总结 http://blog.csdn.net/woshinia/article/details/11520403 手机截屏: http://www.cnblogs.com/tgyf/p/4655507.html 转载的地方: http://www.cnblogs.com/tgyf/p/4851092.htm 阅读详情

相关推荐

ScreenUtil.java

安卓屏幕工具类

android中和屏幕相关的操作

/** * desc : 屏幕相关工具类 * 获取手机分辨率 getDeviceWidth、getDeviceHeight * 设置透明状态栏(api大于19方可使用) setTransparentStatusBar * 隐藏状态栏(注释萌萌哒) hideStatusBar * 获取状态栏高度 getStatusBarHeight * 判断状态栏是否存在 isStatusB

chenchuanwen111的博客 411

【WebApi + Sqlserver】 使用C#编写WebApi并打开sqlserver数据库进行访问,代码适用于简单练习,真实开发需自行完善

【WebApi + Sqlserver】 使用C#编写WebApi并打开sqlserver数据库进行访问,代码适用于简单练习,真实开发需自行完善

2302_78387246的博客 3592

Android 开发的常用工具类(一)——ScreenUtils 可用于获取屏幕宽高,截屏的工具类

DisplayMetircs 的介绍 示例如下DisplayMetircs 的介绍:Android可设置为随着窗口大小调整缩放比例,但即便如此,手机程序设计人员还是必须知道手机屏幕的边界,以避免缩放造成的布局变形问题。手机的分辨率信息是手机的一项重要信息,很好的是,Android 已经提供DisplayMetircs 类可以很方便的获取分辨率。下面简要介绍 DisplayMetics 类:Andor

liujiaoruiIT的博客 6002

别再折腾老教程了!树莓派4B/5最新系统(Raspberry Pi OS Bookworm)红外遥控配置,用gpio-ir驱动一次成功

本文详细介绍了树莓派4B/5在最新Raspberry Pi OS Bookworm系统下配置红外遥控的完整指南,摒弃过时的lirc-rpi驱动,采用现代gpio-ir驱动方案。从硬件连接到软件配置,提供10分钟快速上手指南,涵盖驱动加载、信号测试、按键映射及高级应用场景,帮助用户高效完成红外遥控配置。

weixin_42520909的博客 442

【科研绘图】【数据拟合曲线】:附Origin详细画图流程

拟合曲线图

weixin_50236590的博客 4万+

flutter系统自适应宽高和ScreenUtils手动适配宽高的原理与区别

因此可以得出结论,当ScreenUtils初始化的时候的宽高和设备的逻辑宽高完全一致的时候,效果是完全一样的,换言之,如果初始化设置的宽高和设备的逻辑宽高不一致,则强制使用初始化设置的宽高为准,这样,不同的手机,都会强制使用screenUtils初始化时设置的宽高作为标准来达成统一。如果使用screenutils,那当前的100就不能当初逻辑像素,需要先转换一次(最终的逻辑宽度=设置的宽度(100)*设备逻辑宽度/ScreenUtils初始化时设置的宽度),然后再乘以设备像素比,最终得到物理像素。

qq_35945801的博客 2153

运用AD进行stm32最小系统PCB图的绘制

运用AD进行stm32最小系统PCB图的绘制一、PCB图的绘制(1)布局(2)布线(3)覆铜(4)电气规则检查二、给PCB添加logo三、生成garber文件总结 一、PCB图的绘制 (1)布局 1.画好原理图后,新建一个PCB项目 2.在Design中选择第二项,导入器件 3.先点击右下角第一项,再点第二项导入器件 导入成功 4.导入后效果 选择紫红色方框,按电脑上的delete键把它删掉 5.在Tools选择Outside Board,自动排布器件 排布后效果如图 6.画线,确定板子范围

lucario1的博客 2149

ScreenUtils工具类

public class ScreenUtils { /** * 获取屏幕高度 * @param context * @return */ public static int getScreenWidth(Context context){ WindowManager manager = (WindowManager) con...

alaleidd的博客 722

基于紫光展锐平台的音频调用到hal层逻辑

基于紫光展锐平台的音频调用到hal层逻辑 1、数据流程图 AudioPolicyService和AudioFlinger的创建: 这两个服务都在audioserver中启动,文件路径: frameworks/av/media/audioserver/main_audioserver.cpp 从AudioFlinger和AudioPolicyService的创建,到output的打开,以及AudioFlinger开始往底层写入数据的具体流程如下图: #mermaid-svg-kjHL4XWwkQXN6NdA

weixin_55053963的博客 1355

Mixer-First Receiver适用于宽带阵列应用的接收机技术1

Mixer-First Receiver适用于宽带阵列应用的接收机技术1技术的背景单元级数字化阵列传统链路到Mixer-First链路的逻辑考虑三种场景小结 技术的背景 在文章《吊打全球的顶级毫米波数字阵列项目-MIDAS》中提到了DARPA在MIDAS项目中在毫米波实现宽带单元级数字化阵列用到了一个关键的叫做N-Path filter的技术,而这个技术同样出现在了《让微波射频工程师颤抖的芯片-MATRICs》的MATRICs芯片中。 为什么DARPA的各个合作研究机构选择这种技术?这篇来自Universi

ICONO的博客 2167

ScreenUtils 获取屏幕相关的辅助类

/** * 获取屏幕相关的辅助类 * Created by Administrator on 2017/2/21. */ public class ScreenUtils { private ScreenUtils() { /* cannot be instantiated */ throw new UnsupportedOperationException("cannot be instantiated"); } /** * 获.

要让世界看得见 423

三维点云转深度图

点云投影过程是将三维点云数据转化为二维图像坐标的关键步骤,它的实现涉及到相机内外参数的计算,包括相机的内部参数(如焦距和主点)和外部参数(如相机位置和方向)。具体来说,可以通过将每个点的三维坐标转换为相机坐标系下的坐标,然后使用相机内部参数和外部参数来计算在二维图像中的坐标。接着计算每个点的深度值,将深度值映射到像素值上,最后创建深度图像并将深度值赋给对应的像素值。这里需要注意的是,在将深度值映射到像素值上时,需要将像素值转换为 uchar 类型,否则在将深度值赋给像素值时会出现类型不匹配的错误。

点云兔子的博客 3171

常用元件 手机状态栏_周三手机课手机截屏怎么做?

点上方蓝字关注我们什么是手机截屏?简单来说就是给“手机屏幕拍个照”又称为“屏幕截图”【为什么需要手机截屏呢?】举个例子:某天你在手机上看到一个不认识的图标或APP,身边又没人懂,你想问问微信好友,但这时用文字是很难描述清楚。如果这时你用手机截屏,变成一张相片,直接发给对方,是不是更简单呢?再比如:当你用手机在某网页上看到一篇短文或一张美图,想保存下来,却发现网页不支持用户复制文字或保存图...

weixin_36330704的博客 865

Transformer实战(5)——Hugging Face环境配置与应用详解

本文详细介绍 Transformer 模型的实践应用全流程。首先讲解基于 Anaconda 的环境配置,包括 transformers 库安装及 hf-mirror 镜像加速方案。然后以 BERT 为例,演示分词器使用、文本编码及 fill-mask 等任务实现,对比 PyTorch/TensorFlow 框架差异。接着展示 Hugging Face 社区模型应用,包括 GPT-2 文本生成和零样本分类。最后扩展至多模态领域,使用 CLIP 模型实现零样本图像分类。

盼小辉丶的博客 1万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

android手机截屏代码,Android手机截屏代码

首先写个工具类:public class ScreenShotTool {private Activity activity;public ScreenShotTool(Activity activity) {this.activity = activity;}public Bitmap getActivityBitmap() {/**取得DecorView,这个View是你需要截图的界面*/Vi...

weixin_42451850的博客 919

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

android中实现截屏的三种思路

APP截屏功能三种实现思路: 1. 基于Android SDK的截屏方法SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd_HH-mm-ss",Locale.US); Stringfname = "/sdcard/" + sdf.format(new Date()) + ".png";

CreativeBoy的专栏 3877

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

android 获取手机屏幕高度,Android全面屏手机获取屏幕高度适配问题

在做手机截屏功能的时候发现,全面屏截图和调用系统的截图不一致经排查,是获取手机屏幕高度的值不对getResources().getDisplayMetrics().heightPixels 在三星S8上返回的值不对,没包含系统状态栏Stack Overflow上找到了答案mActivity.getWindowManager().getDefaultDisplay().getRealMetrics(...

weixin_42337065的博客 1105

android手机截图功能,安卓手机怎么截屏?三星/华为/小米等手机截图方法

之前我们讲了苹果手机怎么截图,那么安卓手机怎么截图呢?下面我们继续来说说三星、华为、小米等安卓系统手机截图方法。一、 三星手机截图方法:方法一:快捷键组合截屏操作:同时按住【Home键 + 电源键】截屏(和iphone x 之前版本的苹果手机的快捷键截图方法一样)。通过这种方式截图是比较多人的选择。没有home键的新版手机可以同时摁下【电源键 + 音量(-)键】来截屏。这点和iphone x之后版...

weixin_39598584的博客 2715

Android 实现截屏和截长图功能的几种方法

一般情况下各种型号的手机都会有自带的截屏功能,也会有诸如“开关机键+音量键”的截屏快捷键,只要手机是亮屏状态,都会将手机屏幕的可视区域(包含状态栏)全部截取下来。 如果开发中想要调取系统的截屏功能,理论上讲是可以的,需要在APK中调用“adb shell screencap -pfilepath” 命令,但是需要获取root权限,调用系统的隐藏API。这就很麻烦了,感兴趣的可以自己研究一下...

牛角尖 1万+

Android 手机截屏

Android 手机截屏 最近由于公司项目需要实现手机的截屏,在实现过程中真的可以说是历经千辛万苦,各种问题层出不穷。

a1824464591的专栏 1934

android代码实现截屏功能

本文介绍了android里如何通过代码实现截屏功能!

chadeltu的专栏 3654

11下滑半个屏幕_三指下滑、指关节截屏不过瘾?全新截屏方式,安排!

手机截屏是每个用户基本上都会使用到的功能,正所谓常用的功能就必须要方便快捷,为了方便用户使用,每个手机厂家也都在不断的优化开发新功能。华为、荣耀在手机截屏方面我认为做的是比较好的,也非常丰富。关于手机截屏你都知道哪些方法呢?今天笔者就给大家分享一下手机截屏的花样操作以及一种全新的截屏方式。音量下键+电源键音量下键+电源键这种截屏方式是最原始的截屏方式,在智能手机刚出来的时候就已经采用这种截屏方式来...

weixin_42493639的博客 659

Android长截屏-- ScrollView,ListView及RecyclerView截屏

Android 截屏,滚动截屏,ScrollView截屏,解决一屏盛不满情况下的截屏操作

BoBoMEe 5755

android手机定时截屏软件,手机截图软件哪个好 安卓手机长截图

手机截图软件哪个好 安卓手机长截图软件下载手机截图软件哪个好用?今天浏览器家园小编为大家推荐一款安卓手机长截图软件,手机长截图怎么弄?不少朋友都在论坛啊微博啊上面,看到一些长截图,相比一张张的截图,更容易阅读。那么这些长截图要怎么弄出来呢?现在很多长截图App,需要手动一张张图截取,再导入到App中合成。有没有更方便的办法?今天,笔者就来给大家推荐一款使用起来更加方便的长截图App,希望大家喜欢!...

weixin_35950365的博客 1540

Android实现截屏和截长图功能的几种方法

一般情况下各种型号的手机都会有自带的截屏功能,也会有诸如“开关机键+音量键”的截屏快捷键,只要手机是亮屏状态,都会将手机屏幕的可视区域(包含状态栏)全部截取下来。 如果开发中想要调取系统的截屏功能,理论上讲是可以的,需要在APK中调用“adb shell screencap -pfilepath” 命令,但是需要获取root权限,调用系统的隐藏API。这就很麻烦了,感兴趣的可以自己研究一下,由于...

~的专栏 3万+
上一篇: 关于日期的两个小题目
下一篇: android常见开源Demo的github地址
麦豆东东
博客等级 码龄14年 2粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值