了解开发手机的各项参数之UI大小

unity转微信小游戏:UI大小设置 阅读详情

上一篇讲了获取显示屏的一些参数,那么今天说下怎么获得系统UI的一些参数.

下面是一个获取状态栏高度的例子.

public class MainActivity extends Activity {

	private TextView tv;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);	
		setContentView(R.layout.activity_main);
		
		try {
			
			//利用反射,获取framework层R类中的dimen类
			Class<?> classT = Class.forName("com.android.internal.R$dimen");
			//创建对象
			Object obj = classT.newInstance();
			
			//获取"status_bar_height"的索引字段
			Field field = classT.getField("status_bar_height");
			//获取"status_bar_height"的索引
			int id = field.getInt(obj);
			//获取"status_bar_height"的索引值,单位是px
			int pxStatusBar = getResources().getDimensionPixelSize(id);
			
			tv = (TextView)findViewById(R.id.show);
			tv.setText(" "+pxStatusBar);
			
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (NoSuchFieldException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}
}

程序执行的结果就是 69,说明我手机的状态栏是69px.


说明:

1.

//利用反射,获取framework层R类中的dimen类

Class<?> classT = Class.forName("com.android.internal.R$dimen");


我们知道,每一个安卓程序都会通过xml文件,生成一个R类,然后里面有String,id,layout等等静态类,每个子类

里面,就是相应的public static的字段.所以,只要我们知道了包名,就能获得该apk中绝大部分控件的大小.

也就是说,com.android.internal.R$dimen可以替换成别的apk的包名.


2.

//获取"status_bar_height"的索引字段
Field field = classT.getField("status_bar_height");

这里的"status_bar_height"是从哪里获得的?

Android 2.3.5源代码 更新至android 4.4,可以下载,度娘网盘

这里下载4.4.2的系统源码吧, 3.81G,记得解压到某个盘的根目录,否则可能文件夹名称长度超过限制导致部分文件失败.

mydroid\frameworks\base\core\res\res\values\dimen.xml文件

<resources>
    <!-- The width that is used when creating thumbnails of applications. -->
    <dimen name="thumbnail_width">164dp</dimen>
    <!-- The height that is used when creating thumbnails of applications. -->
    <dimen name="thumbnail_height">145dp</dimen>
    <!-- The standard size (both width and height) of an application icon that
         will be displayed in the app launcher and elsewhere. -->
    <dimen name="app_icon_size">48dip</dimen>
    <!-- The maximum number of action buttons that should be permitted within
         an action bar/action mode. This will be used to determine how many
         showAsAction="ifRoom" items can fit. "always" items can override this. -->
    <integer name="max_action_buttons">2</integer>
    <dimen name="toast_y_offset">64dip</dimen>
    <span style="color:#cc0000;"><!-- Height of the status bar -->
    <dimen name="status_bar_height">25dip</dimen></span>
    <!-- Height of the bottom navigation / system bar. -->
    <dimen name="navigation_bar_height">48dp</dimen>
    <!-- Height of the bottom navigation bar in portrait; often the same as @dimen/navigation_bar_height -->
    <dimen name="navigation_bar_height_landscape">48dp</dimen>
    <!-- Width of the navigation bar when it is placed vertically on the screen -->
    <dimen name="navigation_bar_width">42dp</dimen>
    <!-- Height of notification icons in the status bar -->
    <dimen name="status_bar_icon_size">24dip</dimen>
    <!-- Size of the giant number (unread count) in the notifications -->
    <dimen name="status_bar_content_number_size">48sp</dimen>
    <!-- Height of the system bar (combined status & navigation); used by
         SystemUI internally, not respected by the window manager. -->
    <dimen name="system_bar_height">@dimen/navigation_bar_height</dimen>


可以看到,这里有很多属性,包括:

<!-- Height of the status bar -->

<dimen name="status_bar_height">25dip</dimen>


然后:

int pxStatusBar = getResources().getDimensionPixelSize(id); = 69

之前的文章说过,我的屏幕密度是2.75, 所以 25*2.75 = 68.85.

如果用这一行:

float pxStatusBar = getResources().getDimension(id); = 68.85

因为我这个代码是谷歌的,有些手机会改这些默认值,不过看来我手机用的是默认的,没有改过.


总的来说,反射是个好东西,我这里仅仅是举了一个简单的例子,如果深入源码去发掘的话,还能做出更多有意思的东西.



软件工程 用户界面设计 用户界面(UI,User Interface)是用户交互以使用软件的前段应用程序视图。用户可以通过用户界面操作和控制软件和硬件。今天,几乎所有存在数字技术的地方都可以找到用户界面,从计算机、手机、汽车、音乐播放器、飞机、轮船等。用户界面是软件的一部分,其中涉及方式旨在提供用户对软件的洞察力。UI 为人机交互提供了基础平台。UI 可以是图形化的、基于文本的、基于音频的和视频的,这取决于底层的硬件和软件组成。UI 可以是硬件或软件,也可以是两者的组合。 阅读详情

相关推荐

自定义View实现 “手机淘宝”物流进程模块进度告知UI横向版

转载请注明出处:王亟亟的大牛之路话不多说,先洗脑,安利!!!https://github.com/ddwhan0123/Useful-Open-Source-Android 旅游都在更啊!!这些天都在浪几乎没撸代码,然后今天下午找了个下午茶时间捯饬了个自定义View来实现 很多APP都有却没怎么公开的一个“进度通知的View” 实现power by:https://dribbble.com/Le

王亟亟的博客 1万+

Android系统 SystemUI 状态栏(StatusBar)和导航栏(Navigationbar) 宽度 、高度修改

Android系统 SystemUI 状态栏(StatusBar)和导航栏(Navigationbar)高度修改 frameworks/base/core/res/res/values/dimens.xml <dimen name="toast_y_offset">24dp</dimen> <!-- Height of the status bar --> <dimen name="status_bar_height">@dimen/.

Jon.Lo 的专栏 6314

全面理解 Unity UI 系统

【狗刨学习网】 随着 Unity 4.6 发布,新 UI 系统终于与大家见面了。 RectTransform Unity UI 系统使用 RectTransform 实现基本的布局和层次控制。RectTransform 继承于 Transform,所以 Transform 的所有特征 RectTransform 同样拥有。在 Transform 基础上,RectTra

5403

Android使用fitsSystemWindows属性实现--状态栏【status_bar】各版本适配方案

Android使用fitsSystemWindows属性实现--状态栏【status_bar】各版本适配方案 首先我们看下qq的status bar在各个android版本系统中适配:   1.Android5.0以上:半透明(APP 的内容不被上拉到状态)   2.Android4.4以上:全透明(APP 的内容不被上拉到状态)  

hehe307的专栏 895

47、Android用户界面设计全解析

本文全面解析了Android用户界面设计的核心概念与实践方法,涵盖视图与视图组的基础知识、常用布局管理器的特点与选择策略、安卓工作室设计工具的使用技巧,以及通过XML、设计工具或Java代码创建界面的对比分析。同时探讨了布局优化、事件处理和交互体验提升的方法,并展望了未来Android UI设计的发展趋势,是Android开发者构建高效、美观、响应式用户界面的实用指南。

aa123的博客 65

eNSP-抓包解析TCP三次握手和四次挥手的过程

一、环境搭建 1.设备连接 2.服务器配置 3.客服端配置 二、抓包测试 1.打开抓包软件 2.客户端获取数据 三、抓包结果

小橙子的博客 3352

各种屏幕尺寸,以及Android的系统定义

尺寸 (宽 x 高); 尺寸比例; 简称 (全写) 352 x 288; 11:9; CIF(Common Intermediate Format) 176 X 144; 11:9; QCIF(Quarter CIF) 功能机曾经很常用 128 x 96; 4:3; subQCIF 320 x 200; 8:5; CGA(Color Graphics Adapter) 640 x 350

山不在高,有金则名 2879

ModelSim 2020.4破解失败?手把手教你解决‘Unable to checkout viewer license‘报错(附环境变量配置)

本文针对ModelSim 2020.4启动时遇到的‘Unable to checkout viewer license’报错,提供了从理解许可证机制到分步修复的完整指南。文章深入解析了viewer license与图形用户界面(GUI)的关系,并详细说明了通过生成有效许可证文件、精准配置系统环境变量及替换关键文件来解决图形界面启动失败的问题,帮助用户彻底修复并理解其背后的逻辑。

k6l7m8n9的博客 991

statusbar 尺寸 显示图标_【教程】一些有关于status bar修改的教程--

该楼层疑似违规已被系统折叠隐藏此楼查看此楼1.状态栏显示运营商找到这一段 加入2.状态栏下拉时候万恶的日期显示隐藏自己对比下,你就懂了,不好表述3.状态栏时间居中:搜索clock删除带有clock的这一段,在id/icons这一段上面添加这段代码当中的4.0dip意思是距离顶部的距离,改了高度就需要适当调整…4.状态栏图片运营商【个性网标】找到①复制代码在上面那段代码的前面添加②复制代码⑦个性网...

weixin_39884832的博客 688

利用Ghidra与SVD插件实现STM32固件深度逆向分析

本文详细介绍了如何利用Ghidra逆向工程框架结合SVD插件,实现对STM32固件(.bin文件)的深度逆向分析。通过加载描述芯片外设寄存器的SVD文件,Ghidra能将晦涩的硬件地址操作转换为可读的寄存器符号,极大提升了对嵌入式固件中通信协议、安全校验等关键逻辑的分析效率。文章涵盖了从Java环境搭建、工具配置到实战逆向解析的完整流程。

peach的博客 944

【模型】OpenClaw 接入阿里云永久免费模型方案

Qwen2.5-7B-Instruct 模型为例。

海兰 4473

Android 8.0 状态栏信号显示、信号定制

之前发了下拉通知栏开关修改的一篇文章。这篇文章呢,主要介绍一下Android状态栏信号图标显示的流程。便于在Android源生上开发的碰到问题的朋友,希望能对读者有所帮助。内容可能比较长首先还是先介绍布局。一、状态栏信号布局路径:android\frameworks\base\packages\SystemUI\res\layout\status_bar.xml如下代码就是状态栏的布局,包含:时钟...

caodaoxin555的博客 7231

【QT开发教程】使用Qt进行蓝牙低功耗(BLE)编程

蓝牙低功耗(BLE,Bluetooth Low Energy)技术广泛应用于现代设备中,例如智能手表、健身追踪器和物联网设备。Qt提供了一套完整的Bluetooth模块,使开发者可以轻松地在应用程序中实现BLE通信功能。本文将介绍如何在Qt中进行BLE编程,包括基本概念、使用方法以及一些实际的示例。

科技改变人类,技术成就未来 2869

Autojs基础-用户界面(ui)

脚本开发需要有界面与用户进行交互,许多脚本开发语言已经有自己的ui控件的使用方式,比如按键精灵的ui界面设置非常便捷。按键精灵的ui控件的取值和赋值方式都已经封装好了,但是autojs很多时候只提供控件,取值和赋值需要自己通过安卓进行封装,甚至需要自己手搓控件功能。以游戏为例,会有各种任务,我们可以根据选择的任务运行脚本,最好的就是多选框单选的方式,这样比较好看。但是,autojs没有让多选框单选的方式,我们又无法保证用户每次只选择一个任务,我们就需要手搓这个功能。

qq_55896432的博客 1868

【OpenClaw企业级智能体实战】第32篇:政企版OpenClaw安全落地指南——奇安信55页报告深度拆解与实战

2026年Q2,OpenClaw(俗称“龙虾”)安全风险集中爆发,公安部、工信部等监管机构密集发声,23万公网暴露实例、155个高危漏洞让企业“养虾”安全压力骤增。奇安信发布的55页《政企版龙虾安全使用指南》,以“看得清、管得住、用得好”为核心,构建了“端-网-云”三层防护体系。本文深度拆解这份报告的九大安全面与三大趋势,全景扫描奇安信、腾讯、360等头部厂商安全方案,提炼企业最低安全基线与实操配置,通过金融机构虚拟案例演示落地全流程,提供从资产摸底、规范制定到工具部署的完整解决方案。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 573

YOLO11有效改进专栏目录

YOLO11改进专栏导航

A1983Z的博客 3679

(8 Android) 用户界面UI设计

(8 Android) 用户界面UI设计 3.1.1 Android界面视图类 Android 图形化的用户界面(Graphical User Interface , GUI) 采用了结构清晰的MVC模型(Model-View-Controller) ,其具体含义: ·提供了处理用户输入的控制器(Controller) ; ·显示用户界面的视图(View) ; ·保存数据和代码的模型(Model)...

chenhanhao0000的博客 425

手机相机Tuning专项调优(一):基础流程与图像主观评价标准建立实战解析

本篇为手机相机系统“Tuning专项调优”系列的开篇,深入剖析了当前手机相机Tuning的基本流程与图像主观评价标准的构建方法。结合实际工程经验与最新业界案例,详细介绍ISP调优和3A控制中涉及的主观评价标准,如锐度、色彩饱和度、噪声感知等,并提出一套可工程化落地的标准制定与评测实践体系,帮助工程师有效提升图像品质。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1933

ps做手机计算机界面,用PS制作手机UI界面设计

本例是为智能手机设计个人首页界面设计,首先明确整个设计风格以简洁为主,结构一目了然,在色彩运用上运用清爽的对比色系,给人视觉上带来舒适的效果。(1)按Ctrl+N组合键新建一个600×1077像素的文档,然后执行“视图>标尺”命令,在显示的标尺区域拉出参考线,效果如图所示。(2)设置前景色为(R:184,G:255,B:229),然后新建一个“图层 1”,接着按Alt+Delete组合键用前...

weixin_42360237的博客 1687

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

零基础搞懂智能机之手机参数怎么看

欢迎转载opendevkit文章, 文章原始地址: http://www.opendevkit.com/?e=53 手机参数, 基本能反映一款机器到底好还是不好.本篇带领大家阅读Samsung Galaxy S5的参数, 让大家购机心里有底. 这里要提醒: 不是硬件参数好, 系统体验就一定好的.当然好的软件, 要用好的硬件支撑. 笔者觉得, 参数差不多就好, 外形, UI, 发热,

1836

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

@scqilin/phone-ui 手机外观组件库

@scqilin/phone-ui是一个轻量级的手机外观渲染库,采用原生TypeScript开发,零依赖且框架无关。核心特性包括:支持iPhone 16全系列机型预设、完全自定义外观参数、动态样式隔离。通过简单API即可在任意前端项目中快速集成手机壳UI,适用于移动端预览场景。设计上采用原生实现确保灵活性,同时提供Vue适配组件优化开发体验。该项目强调简洁性和复用性,支持通过CSS变量定制样式,并已开源接受社区贡献。

X01动力装甲的专栏 1093

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【Unity 科幻风格UI插件】Shift - Complete Sci-Fi UI 提供完整的UI元素和控件,旨在帮助开发者快速构建未来感、科技感十足的用户界面

Shift - Complete Sci-Fi UI 是一款专为Unity设计的科幻风格UI插件,提供完整的UI元素和控件,旨在帮助开发者快速构建未来感、科技感十足的用户界面。无论是用于科幻游戏、宇宙冒险、虚拟现实(VR)应用,还是任何需要现代或未来风格UI的项目,Shift都提供了丰富的预设和高效的自定义选项,极大地简化了UI设计过程。

2403_88403568的博客 895

取得手机屏幕大小

取得手机屏幕大小 DisplayMetrics取得画面宽高的方法 范例说明 在开发手机应用程序时,除了底层对API的掌握度之外,最重要的仍是对屏幕分辨率的概念,因各家手机厂商所采用的屏幕尺寸不同, user UI接口呈现及布局自然也各异。 尽管Android可设置为随着窗口大小调整缩放比例,但即便如此, 手机程序设计人员还是必须知道手机屏幕的边界,以避免缩放造成的布局(Layout)变

Robin Hu的专栏 1192

ACE-Step UI用户界面设计理念:为什么它如此易用

ACE-Step UI作为开源的Suno替代方案,以其专业且易用的界面设计让AI音乐生成变得简单直观。这款免费、本地运行且无限制的工具,通过精心设计的用户界面,让新手和专业用户都能轻松创建高质量音乐。 ## 直观布局:核心功能一目了然 ACE-Step UI采用分区式布局设计,将复杂的音乐生成过程拆解为清晰的功能模块。左侧为导航菜单和核心控制区,中央是音乐项目管理面板,右侧则展示歌曲详情和生成

gitblog_00097的博客 699

BREW/BREWMP手机硬件参数差异性浅析

<br /> <br />BREW手机来自两个方面差异:<br />l  硬件参数差异化<br />包括手机CPU性能差异、屏幕大小、字体大小、是否支持触摸屏及键盘布局<br />l  BREW接口支持的差异<br />BREW对同时按键的支持、对压缩接口IUnzipAStream的支持<br /> 1.1 手机芯片及处理能力级别<br />手机芯片型号是手机分组首要参数,它决定了手机处理能力,手机的嵌入式文件系统和内存大小都根据芯片能力做相应配置。分组将根据芯片型号划分如下级别:<br />l  2G低级

我相信...... 2466

手机长度px值_手机UI设计基础-尺寸&单位

原标题:手机UI设计基础-尺寸&单位初入移动端开发和UI设计的童鞋可能对UI尺寸和单位特头痛,孟春觉得分享一下手机APP/Web UI尺寸和单位的经验是有价值的。一、iPhone机型1、分辨率手机屏幕的分辨率各种尺寸五花八门,特别是安卓手机厂商众多,引起更众多的分辨率,480×800, 480×854, 540×960, 720×1280, 1080×1920,2k屏。iPhone的分辨率...

weixin_39815310的博客 1453
上一篇: 了解开发手机的各项参数之显示屏
下一篇: Activity生命周期管理(Managing the Activity Lifecycle)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值