CN102298495A - 一种android软件自适应不同屏幕密度的方法 - Google Patents
一种android软件自适应不同屏幕密度的方法 Download PDFInfo
- Publication number
- CN102298495A CN102298495A CN2011101762780A CN201110176278A CN102298495A CN 102298495 A CN102298495 A CN 102298495A CN 2011101762780 A CN2011101762780 A CN 2011101762780A CN 201110176278 A CN201110176278 A CN 201110176278A CN 102298495 A CN102298495 A CN 102298495A
- Authority
- CN
- China
- Prior art keywords
- control
- android
- file
- current screen
- density
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种android软件自适应不同屏幕密度的方法,属于计算机软件技术领域。本方法为:首先判断程序布局配置文件中控件高和宽是否能设置为变量;如果能,则将程序布局配置文件中控件高和宽分别设置为一变量,控件高和宽的变量值设置为填充所在容器全部空间时的值或能够容纳控件内部内容大小时的值;然后确定该控件的位置和大小;如果不能,则在程序的资源文件夹下设置若干布局文件夹,每一布局文件夹对应存储一屏幕密度值布局配置文件;然后根据当前屏幕密度值选择匹配的布局配置文件;最后,获取当前屏幕密度值,计算程序所需动态生成控件的大小,在当前屏幕上生成所需控件。本发明可使Android程序自动适应不同的屏幕密度。
Description
技术领域
本发明涉及一种android软件自适应不同屏幕密度的方法,属于计算机软件技术领域。
背景技术
Android是基于Linux内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。早期由原名为″Android″的公司开发,谷歌在2005年收购″Android.Inc″后,继续进行对Android系统开发运营,它采用了软件堆层(software stack,又名软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能,其他的应用软件则由各公司自行开发,部分程序以Java编写。
2011年初数据显示,仅正式上市两年的操作系统Android已经超越称霸十年的塞班系统,使之跃居全球最受欢迎的智能手机平台。现在,Android系统不但应用于智能手机,也在平板电脑市场急速扩张。
Android无疑是当下最炙手可热的手机操作系统,在优势方面,Android平台首先就是其开放性,开发的平台允许任何移动终端厂商加入到Android联盟中来。但正是由于Android的开放性,使得不同移动终端厂商生产出来的移动终端也就不尽相同,主要体现在屏幕的不同。Android主要有以下几种屏:
QVGA和WQVGA屏density=120;
HVGA屏density=160;
WVGA屏density=240;
其中:VGA(Video Graphics Array)是IBM在1987年随PS/2机一起推出的一种视频传输标准,具有分辨率高、显示速率快、颜色丰富等优点,在彩色显示器领域得到了广泛的应用。QVGA(Quarter VGA)。顾名思义即VGA的四分之一尺寸,亦即在液晶屏幕(LCD)上输出的分辨率是240×320像素。WQVGA(Wide Quarter Video Graphics Array)数码产品屏幕分辨率的一种,代表480X272(宽高比16∶9)或者400X240(宽高比5∶3)的屏幕分辨率,而不是国内厂商标称的480X240。HVGA(Half-size VGA)即VGA(640*480)的一半,分辨率为(480*320),(3∶2宽高比)。WVGA(Wide VGA),其分辩率为800×480象素,是扩大了VGA(640×480)的分辨率,应用于PDA和手机等,因为很多网页的宽度都是800,所以WVGA的屏幕会更加适合于浏览网页,可以说是未来手持设备的分辨率的大趋势。
所以大多数Android应用程序就必须面对一个问题,怎样能自动适应不同的屏幕密度(density)。
针对这个问题,本发明提供了一种实现方法,使Android应用程序可以自动适应不同的屏幕密度(density),以合适的方式展示程序内容,避免显示出现问题。
发明内容
针对现有技术中存在的问题,本发明的目的在于提供一种android软件自适应不同屏幕密度的方法。
本发明的技术方案为:
一种android软件自适应不同屏幕密度的方法,其步骤为:
1)判断android程序布局配置文件中控件高和宽是否能设置为变量;
如果能,则将android程序布局配置文件中控件高和宽分别设置为一变量,控件高和宽的变量值设置为填充所在容器全部空间时的值或能够容纳控件内部内容大小时的值;然后根据该控件宽和高的值,以及设置的该控件比重,确定该控件的位置和大小;
如果不能,则在android程序的资源文件夹res下设置若干布局文件夹,每一布局文件夹对应存储一屏幕密度值的布局配置文件;然后根据当前屏幕密度值,选择匹配的布局配置文件;
2)获取当前屏幕密度值,计算android程序所需动态生成控件的大小,在当前屏幕上生成所需控件。
进一步的,所述资源文件夹res下设置若干图片文件夹,每一图片文件夹对应存储同一屏幕密度规格要求的图片;然后根据当前屏幕密度值,选择匹配的图片。
进一步的,所述生成所需控件的方法为:首先,获取当前屏幕密度值,根据密度值计算密度比例因子;然后,根据密度比例因子和所需控件的设置尺寸,计算得到所需控件在当前屏幕上的控件实际大小。
进一步的,利用当前屏幕密度值/160,计算得到所述密度比例因子。
进一步的,根据公式:控件实际大小=控件大小/密度比例因子,计算控件实际大小。
进一步的,通过android程序自身提供的类和方法获取当前屏幕密度值。
进一步的,所述所需动态生成控件包括图标。
本发明的主要内容包括:
一、在编写应用程序的布局配置文件时(xxx.xml),避免去使用数字去设置android_height和android_width(android_height代表某一控件的高,android_width代表某一控件的宽),使用android_height和android_width等于fill_parent或wrap_content(即,将android_height和android_width值设为fill_parent或wrap_content,fill_parent是强制性地使控件扩展以填充所在容器的全部空间。wrap_content是控件根据内部内容自动扩展以适应其大小。),再与android_weight(android_weight代表控件所占的比重,就是layout_weight的值越大,所占比例也越大。layout_weight的设置和layout_height,layout_width不同的组合得出来不同的结果)配合实现控件的位置与大小。
二、如果在布局配置文件中必须要使用数字去设置android_height和android_width,或android_textSize(android_textSize代表控件的字体大小,对于有文字显示的控件才有此属性),我们可以在res目录下创建不同的layout文件夹(在android项目里,主要的资源文件是放在res文件夹下的,在res文件夹下的不同文件夹存放不同的资源文件,如:res/drawable下存放的是图片文件,res/layout下存放的是屏幕布局文件等。在java代码中实现对资源的访问),比如layout-hdpi对应density=240、layout-mdpi对应density=160、layout-l对应dpi=120(dpi是“dot per inch”的缩写,每英寸像素数,一般情况下的普通屏幕:ldpi是120,mdpi是160,hdpi是240。android系统自身很智能,它会根据屏幕的density去选择不同的layout-xxx文件夹下的布局配置文件。),系统会根据屏幕的大小自己选择合适的layout进行使用,即当启动应用程序的时候,系统会自己根据当前屏幕的密度,选择res下不同的目录下的资源文件,例如,如果density=160,就会选择layout-mdpi下的对应xml文件,如果res下没有layout-mdpi文件夹或layout-mdpi下不存在java代码中需要调用的xml文件,会选择layout文件夹下的xml文件,如果还没有layout文件夹,程序会报错。layout文件夹是系统默认读取的文件夹。
三、在程序代码中动态生成的控件,我们通过android系统自身提供的类和方法在代码中获取当前屏幕的密度比例因子(公式:density/160),通过计算得到应设置的大小,公式:控件实际大小=控件大小/密度比例因子。
运用以上三个步骤可实现程序自适应不同屏幕密度(density),注意在res目录下创建不同的drawable文件夹,比如drawable-hdpi、drawable-mdpi、drawable-ldpi,在文件夹下放不同规格的图片(即,将不同密度的图片分别存在不同文件夹名下,然后由应用程序调取并显示在屏幕上),保证不同屏幕密度下显示出来的图片效果不模糊失真。
与现有技术相比,本发明的积极效果为:
本发明可以使Android应用程序自动适应不同的屏幕密度(density),以合适的方式展示程序内容,避免显示出现问题。
附图说明
图1、本发明方法流程图;
图2、res目录下创建的两个layout文件夹示意图。
具体实施方式
本发明的方法流程如图1所示,下面以应用仓库app来阐述本发明的实现方法。
一、在应用仓库的布局配置文件中除了文本的大小以外,避免使用了数字,使用android_height和android_width等于fill_parent或wrap_content,再与android_weight配合实现控件的位置与大小。以main.xml文件为例,代码如下:
二、在以上的代码中可以看出,字体的大小还是使用了数字,所以为了自适应不同的屏幕密度,在res目录下创建了两个layout文件夹,分别为layout和layout-hdpi,如图2所示。
layout文件夹下的main.xml文件,代码同上
layout-hdpi文件夹下的main.xml文件,代码如下:
两个文件夹下的字体大小设置不同。
三、在应用仓库程序代码中要动态生成一些控件,比如图标,图标的大小值通过计算得到,首先获取当前屏幕的密度比例因子,代码如下:
DisplayMetrics dm=new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
density=dm.density;
然后通过计算得到图标的大小,代码如下:
以上就是本发明在应用仓库app中的实际运用,通过此方法解决了android程序在多个不同终端设备上显示的问题。
Claims (7)
1.一种android软件自适应不同屏幕密度的方法,其步骤为:
1)判断android程序布局配置文件中控件高和宽是否能设置为变量;
如果能,则将android程序布局配置文件中控件高和宽分别设置为一变量,控件高和宽的变量值设置为填充所在容器全部空间时的值或能够容纳控件内部内容大小时的值;然后根据该控件宽和高的值,以及设置的该控件比重,确定该控件的位置和大小;
如果不能,则在android程序的资源文件夹res下设置若干布局文件夹,每一布局文件夹对应存储一屏幕密度值的布局配置文件;然后根据当前屏幕密度值,选择匹配的布局配置文件;
2)获取当前屏幕密度值,计算android程序所需动态生成控件的大小,在当前屏幕上生成所需控件。
2.如权利要求1所述的方法,其特征在于在所述资源文件夹res下设置若干图片文件夹,每一图片文件夹对应存储同一屏幕密度规格要求的图片;然后根据当前屏幕密度值,选择匹配的图片。
3.如权利要求1或2所述的方法,其特征在于所述生成所需控件的方法为:首先,获取当前屏幕密度值,根据密度值计算密度比例因子;然后,根据密度比例因子和所需控件的设置尺寸,计算得到所需控件在当前屏幕上的控件实际大小。
4.如权利要求3所述的方法,其特征在于利用当前屏幕密度值/160,计算得到所述密度比例因子。
5.如权利要求4所述的方法,其特征在于根据公式:控件实际大小=控件大小/密度比例因子,计算控件实际大小。
6.如权利要求3所述的方法,其特征在于通过android程序自身提供的类和方法获取当前屏幕密度值。
7.如权利要求3所述的方法,其特征在于所述所需动态生成控件包括图标。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011101762780A CN102298495A (zh) | 2011-06-27 | 2011-06-27 | 一种android软件自适应不同屏幕密度的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011101762780A CN102298495A (zh) | 2011-06-27 | 2011-06-27 | 一种android软件自适应不同屏幕密度的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102298495A true CN102298495A (zh) | 2011-12-28 |
Family
ID=45358942
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011101762780A Pending CN102298495A (zh) | 2011-06-27 | 2011-06-27 | 一种android软件自适应不同屏幕密度的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102298495A (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103345388A (zh) * | 2013-06-05 | 2013-10-09 | 中国电子科技集团公司第十五研究所 | 基于安卓操作系统的软件适应移动终端的方法及装置 |
CN103366341A (zh) * | 2013-04-16 | 2013-10-23 | 广东欧珀移动通信有限公司 | 一种图像自适应分辨率显示的方法及装置 |
CN103488403A (zh) * | 2013-08-30 | 2014-01-01 | 小米科技有限责任公司 | 界面布局切换方法、装置和移动终端 |
WO2014094628A1 (en) * | 2012-12-19 | 2014-06-26 | Tencent Technology (Shenzhen) Company Limited | Method of implementing screen adaptation for owner-drawn elements and apparatus |
CN103973739A (zh) * | 2013-01-30 | 2014-08-06 | 腾讯科技(深圳)有限公司 | 一种信息显示的方法、系统及移动终端 |
CN105094891A (zh) * | 2015-06-30 | 2015-11-25 | 小米科技有限责任公司 | 效果显示方法及装置 |
CN105739972A (zh) * | 2016-01-21 | 2016-07-06 | 浪潮通用软件有限公司 | 一种实现控件自适应屏幕的方法和装置 |
CN103744595B (zh) * | 2013-12-30 | 2017-03-22 | 广州华多网络科技有限公司 | 自适应显示方法和装置 |
WO2017049874A1 (zh) * | 2015-09-23 | 2017-03-30 | 宇龙计算机通信科技(深圳)有限公司 | 聊天列表的显示方法及装置 |
CN108921802A (zh) * | 2018-06-29 | 2018-11-30 | 联想(北京)有限公司 | 一种图像处理方法及装置 |
CN109710121A (zh) * | 2019-01-10 | 2019-05-03 | 环球雅途集团有限公司 | 一种自适应屏幕尺寸的排版显示方法 |
US10379593B2 (en) | 2015-10-23 | 2019-08-13 | Samsung Electronics Co., Ltd. | Image displaying apparatus and method of operating the same |
CN111324326A (zh) * | 2020-02-20 | 2020-06-23 | 深圳震有科技股份有限公司 | 将软件显示到一机多屏的处理方法及装置 |
CN112948036A (zh) * | 2021-02-08 | 2021-06-11 | 深圳市慧为智能科技股份有限公司 | 应用密度适配方法、装置、设备及计算机可读存储介质 |
CN113821186A (zh) * | 2021-11-22 | 2021-12-21 | 湖南新云网科技有限公司 | 一种文字显示大小调节方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1746843A (zh) * | 2004-09-08 | 2006-03-15 | 英业达股份有限公司 | 视窗及其图标设定系统及方法 |
CN1866244A (zh) * | 2006-06-23 | 2006-11-22 | 浙江大学 | 普适环境下协同设计中图形图像的自适应显示方法 |
US20070130523A1 (en) * | 2005-12-01 | 2007-06-07 | Tai-Yeon Ku | User interface automatic transform system and method based on display device |
CN101216765A (zh) * | 2008-01-21 | 2008-07-09 | 中兴通讯股份有限公司 | 一种移动终端主题样式的动态变更方法 |
CN101238427A (zh) * | 2005-08-02 | 2008-08-06 | 索尼株式会社 | 基于网络的图形用户界面的动态大小调整的系统和方法 |
-
2011
- 2011-06-27 CN CN2011101762780A patent/CN102298495A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1746843A (zh) * | 2004-09-08 | 2006-03-15 | 英业达股份有限公司 | 视窗及其图标设定系统及方法 |
CN101238427A (zh) * | 2005-08-02 | 2008-08-06 | 索尼株式会社 | 基于网络的图形用户界面的动态大小调整的系统和方法 |
US20070130523A1 (en) * | 2005-12-01 | 2007-06-07 | Tai-Yeon Ku | User interface automatic transform system and method based on display device |
CN1866244A (zh) * | 2006-06-23 | 2006-11-22 | 浙江大学 | 普适环境下协同设计中图形图像的自适应显示方法 |
CN101216765A (zh) * | 2008-01-21 | 2008-07-09 | 中兴通讯股份有限公司 | 一种移动终端主题样式的动态变更方法 |
Non-Patent Citations (3)
Title |
---|
《韶关学院学报 自然科学》 20070915 陈正铭,田丽平,蔡天平 "可视化编程工具中控件自动适应窗体大小的实现" 第37-40页 1-7 第28卷, 第9期 * |
HAWKSTAR: "android的多分辨率支持", 《HTTP://BBS.GFAN.COM/THREAD-488119-1-1.HTML》 * |
陈正铭,田丽平,蔡天平: ""可视化编程工具中控件自动适应窗体大小的实现"", 《韶关学院学报 自然科学》 * |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014094628A1 (en) * | 2012-12-19 | 2014-06-26 | Tencent Technology (Shenzhen) Company Limited | Method of implementing screen adaptation for owner-drawn elements and apparatus |
TWI490772B (zh) * | 2012-12-19 | 2015-07-01 | Tencent Tech Shenzhen Co Ltd | 自繪控制項的螢幕適配方法及裝置 |
CN103973739A (zh) * | 2013-01-30 | 2014-08-06 | 腾讯科技(深圳)有限公司 | 一种信息显示的方法、系统及移动终端 |
CN103366341A (zh) * | 2013-04-16 | 2013-10-23 | 广东欧珀移动通信有限公司 | 一种图像自适应分辨率显示的方法及装置 |
CN103366341B (zh) * | 2013-04-16 | 2016-11-02 | 广东欧珀移动通信有限公司 | 一种图像自适应分辨率显示的方法及装置 |
CN103345388A (zh) * | 2013-06-05 | 2013-10-09 | 中国电子科技集团公司第十五研究所 | 基于安卓操作系统的软件适应移动终端的方法及装置 |
CN103488403B (zh) * | 2013-08-30 | 2018-02-02 | 小米科技有限责任公司 | 界面布局切换方法、装置和移动终端 |
CN103488403A (zh) * | 2013-08-30 | 2014-01-01 | 小米科技有限责任公司 | 界面布局切换方法、装置和移动终端 |
CN103744595B (zh) * | 2013-12-30 | 2017-03-22 | 广州华多网络科技有限公司 | 自适应显示方法和装置 |
CN105094891A (zh) * | 2015-06-30 | 2015-11-25 | 小米科技有限责任公司 | 效果显示方法及装置 |
CN105094891B (zh) * | 2015-06-30 | 2018-11-06 | 小米科技有限责任公司 | 效果显示方法及装置 |
WO2017049874A1 (zh) * | 2015-09-23 | 2017-03-30 | 宇龙计算机通信科技(深圳)有限公司 | 聊天列表的显示方法及装置 |
US10379593B2 (en) | 2015-10-23 | 2019-08-13 | Samsung Electronics Co., Ltd. | Image displaying apparatus and method of operating the same |
CN105739972A (zh) * | 2016-01-21 | 2016-07-06 | 浪潮通用软件有限公司 | 一种实现控件自适应屏幕的方法和装置 |
CN108921802A (zh) * | 2018-06-29 | 2018-11-30 | 联想(北京)有限公司 | 一种图像处理方法及装置 |
US11288776B2 (en) | 2018-06-29 | 2022-03-29 | Lenovo (Beijing) Co., Ltd. | Method and apparatus for image processing |
CN109710121A (zh) * | 2019-01-10 | 2019-05-03 | 环球雅途集团有限公司 | 一种自适应屏幕尺寸的排版显示方法 |
CN111324326A (zh) * | 2020-02-20 | 2020-06-23 | 深圳震有科技股份有限公司 | 将软件显示到一机多屏的处理方法及装置 |
CN111324326B (zh) * | 2020-02-20 | 2023-12-05 | 深圳震有科技股份有限公司 | 将软件显示到一机多屏的处理方法及装置 |
CN112948036A (zh) * | 2021-02-08 | 2021-06-11 | 深圳市慧为智能科技股份有限公司 | 应用密度适配方法、装置、设备及计算机可读存储介质 |
CN113821186A (zh) * | 2021-11-22 | 2021-12-21 | 湖南新云网科技有限公司 | 一种文字显示大小调节方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102298495A (zh) | 一种android软件自适应不同屏幕密度的方法 | |
US10031906B2 (en) | Images and additional data associated with cells in spreadsheets | |
US8261209B2 (en) | Updating content display based on cursor position | |
US8887132B1 (en) | Application runtime environment and framework | |
US20230359447A1 (en) | Display Interface Layout Method and Electronic Device | |
US10713420B2 (en) | Composition and declaration of sprited images in a web page style sheet | |
CN103279259A (zh) | 在用户界面中提供主题变体 | |
CN102609256A (zh) | 一种基于网页的动态图表生成方法 | |
CN103677789A (zh) | 基于grid组件的列表数据展现方法及系统 | |
CN103412748B (zh) | 嵌入式平台的用户界面的显示控制方法、装置及系统 | |
US10410606B2 (en) | Rendering graphical assets on electronic devices | |
CN110019464B (zh) | 页面处理方法及装置 | |
CN103488777A (zh) | 一种调节网页展示效果的方法及系统 | |
WO2015184736A1 (zh) | 一种触屏设备背景图变换的方法及终端 | |
US20070300146A1 (en) | Form output control apparatus, form output control method, and computer readable program | |
CN103049430A (zh) | 一种基于idf格式文件的页面显示方法 | |
CN106687946A (zh) | 生成用于应用的移动网络浏览器视图 | |
CN109343772A (zh) | 一种基于h5页面的海报生成方法、系统、装置及存储介质 | |
US10579713B2 (en) | Application Markup language | |
CN107402749A (zh) | 实现图片加载库的方法及装置 | |
US20120170078A1 (en) | Image processing system and method | |
US8910065B2 (en) | Secondary output generation from a presentation framework | |
CN105786472B (zh) | 一种基于ecp平台取数函数设置方法及装置 | |
US20150370459A1 (en) | System, method and computer program product for generating a mobile application based on page metadata | |
CN117908880A (zh) | 表单处理方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20111228 |