CN105843601B - 基于安卓***的屏幕自适应适配方法 - Google Patents
基于安卓***的屏幕自适应适配方法 Download PDFInfo
- Publication number
- CN105843601B CN105843601B CN201610141760.3A CN201610141760A CN105843601B CN 105843601 B CN105843601 B CN 105843601B CN 201610141760 A CN201610141760 A CN 201610141760A CN 105843601 B CN105843601 B CN 105843601B
- Authority
- CN
- China
- Prior art keywords
- attribute
- child node
- android system
- layout
- adaptation
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/4492—Inheritance
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明公开了一种基于安卓***的屏幕自适应适配技术。本发明的技术首先通过遍历布局文件形成View树结构,然后将该View树结构的子节点属性与目标属性进行配对,形成新的属性集合,然后在遍历新的属性集合的过程中,通过占空比的计算方式实现View树结构中各节点的布局适配,从而实现对不同设备的适配。本发明的技术减少了工作量,让开发者按照设计图直接进行UI设计,不需要产生多余的资源文件,实现交互界面的适配开发工作,最终实现应用在不同的安卓设备上得到好的体验效果。
Description
技术领域
本发明涉及移动应用开发领域,具体涉及基于安卓***的屏幕自适应适配技术。
背景技术
一方面,由于安卓***的开放性、任何用户、开发者、OEM厂商、运营商都可以对安卓进行定制,造成安卓***的碎片化程度越来越严重;另一方面由于安卓应用交互体验的要求不断提高,造成安卓开发者需要针对更多机型做适配工作。
现有技术中,Google在屏幕的适配方面提供了两种技术:1)对主流机器进行“界面定制”开发;2)百分比布局及扩展。但是上述两种技术都不是最理想的实现方式,前一种技术存在覆盖面及工作量的问题,后一种技术由于依赖父容器,导致部分控件高度无法使用百分比同时也存在需要计算百分比工作量的问题。
发明内容
[要解决的技术问题]
本发明的目的是上述现有技术问题,提供了一种具体涉及基于安卓***的屏幕自适应适配技术。该技术让开发者按照设计图直接进行UI设计,不需要产生多余的资源文件,实现交互界面的适配开发工作,最终实现应用在不同的安卓设备上得到好的体验效果。
[技术方案]
为了达到上述的技术效果,本发明采取以下技术方案:
本发明的技术首先通过遍历布局文件形成View树结构,然后将该View树结构的子节点属性与目标属性进行配对,形成新的属性集合,然后在遍历新的属性集合的过程中,通过占空比的计算方式实现View树结构中各节点的布局适配,从而实现对不同设备的适配。
一种基于安卓***的屏幕自适应适配技术,它包括以下步骤:
(1)遍历布局文件得到View树结构,通过对LinearLayout、FrameLayout 和RelativeLayout这三种布局文件的继承,以实现对三种布局文件自身及其子节点的管理;
(2)通过分别继承的三种布局文件中对应内部静态类LayoutParams,将子节点属性和目标属性进行配对,形成新的属性集合;然后遍历新的属性集合,根据规定构成对应的属性对象,将该属性对象与子节点进行绑定;
(3)对所有子节点进行初步计算,得到子节点的属性value,并从子节点中取出所绑定的属性集合,将属性value添加到所对应的子节点属性上,用LayoutParams对所有属性进行封装,并将封装的属性传递回子节点;
(4)按照***框架的时序进行布局和绘制流程。
根据本发明更进一步的技术方案,所述LayoutParams包括layout_width、layout_height、layout_margin、textSize和padding。
根据本发明更进一步的技术方案,所述属性value是根据设定的UI设计交互尺寸与当前屏幕的分辨率计算得到的占空比。
根据本发明更进一步的技术方案,所述规定是指在遍历新的属性集合时,设定“px”为其关键字,根据该属性集合中属性value是否包含px来构建新的属性集合对象,以实现其与子节点的绑定。
根据本发明更进一步的技术方案,在进行初步计算过程中,根据子节点的属性要求引用baseOffset偏移校正。
下面将详细地说明本发明。
本发明得到View树结构,其视图布局如图1所示,从ViewRoot对象调用根视图的layout()方法开始,方法内部调用根视图的onlayout()实现对子视图逐层调用layout();若子视图为View子类对象,则只需在子视图重载的 onlayout()内部实现自己的布局视图;若子视图为ViewGroup子类对象,则按照前面通过递归实现逐一遍历。根据***View绘制流程,在逐层遍历过程中通过占空比的计算方式实现各节点的布局适配,从而实现对不同设备的适配。其中,View子类对象均依附于ViewGroup容器,View的布局管理由直属的ViewGroup对象管理,通过多定义的遍历布局文件形成类似图1的View树结构,通过继承***UI中的几种基本布局方式,分别实现对对应布局方式的管理。在本发明中,所述子节点即为View子类;LinearLayout、FrameLayout和 RelativeLayout为ViewGroup子类,即节点。
本发明的基于安卓***的屏幕自适应适配技术主要应用在android应用开发中交互界面的适配问题。
本发明与现有技术相比,具有以下的有益效果:
本发明的技术减少了工作量,让开发者按照设计图直接进行UI设计,不需要产生多余的资源文件,实现交互界面的适配开发工作,最终实现应用在不同的安卓设备上得到好的体验效果。
附图说明
图1为View树结构示意图;
图2为本发明基于安卓***的屏幕自适应适配技术的流程图;
图3为本发明属性对象的统计流程图。
具体实施方式
下面结合本发明的实施例对本发明作进一步的阐述和说明。
实施例:
一种如图2所示的基于安卓***的屏幕自适应适配技术,它包括以下步骤:
(1)遍历布局文件得到View树结构,通过对LinearLayout、FrameLayout 和RelativeLayout这三种布局文件的继承,以实现对三种布局文件自身及其子节点的管理;
(2)通过分别继承的三种布局文件中对应内部静态类LayoutParams,将子节点属性和目标属性进行配对,形成新的属性集合;然后遍历新的属性集合,根据规定构成对应的属性对象,将该属性对象与子节点进行绑定;
(3)对所有子节点进行初步计算,得到子节点的属性value,并从子节点中取出所绑定的属性集合,将属性value添加到所对应的子节点属性上,用LayoutParams对所有属性进行封装,并将封装的属性传递回子节点;
(4)按照***框架的时序进行布局和绘制流程,在绘制时序时,需根据控件大小、位置等信息进行布局和绘制流程。
所述LayoutParams包括layout_width、layout_height、layout_margin、textSize和padding。LayoutParams中的是需要适配的属性,其中layout_margin包括 layout_marginLeft及其他margin的属性;padding包括paddingLeft及其他padding 的属性。
所述属性value是根据设定的UI设计交互尺寸与当前屏幕的分辨率计算得到的占空比。该步骤主要是实现了安卓***UI的适配技术,其涉及交互的尺寸通过AndroidManifest.xml定义并在程序启动时读取到内存。
所述规定是指在遍历新的属性集合时,设定“px”为其关键字,根据该属性集合中属性value是否包含px作为个规定格式来构建新的属性集合对象,以实现其与子节点的绑定。具体如图3所示,当所获取的View属性集合不含有px,则按照原来的属性与该View绑定,当该属性集合含有px时,则将形成属性对象,并将该属性对象添加到列表中,完成属性计算后,将属性对象与该View绑定,如果没哟完成,则返回属性是否为规定格式的步骤上。
在进行初步计算过程中,根据子节点的属性要求引用baseOffset偏移校正。
本发明的具体实施方式如下:在View子类进行onMeasure计算时,需要对节点即布局文件的LayoutParams进行重新设置:父类对容器类ViewGroup子类的子节点View子类进行属性添加,属性对象用一个List维护,因此通过for循环调用实现属性添加。单属性为一个抽象对象,需要对所属性功能分别进行实现,属性的value根据当前屏幕的分辨率及UI设计参考来计算占空比。
更实施方式:对目标View的宽度计算公式为:int desWidth=(int)(val* 1.0f/(designWidth–baseOffset)*screenWidth),其中val为按照规定格式读取的该属性的设计值,designWidth为UI设计文档的参考宽度,screenWidth为该设备的宽度,baseOffset为针对该控件所设计的偏移量,该偏移量主要是为了提升部分控件的适配效果。
尽管这里参照本发明的解释性实施例对本发明进行了描述,上述实施例仅为本发明较佳的实施方式,本发明的实施方式并不受上述实施例的限制,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。
Claims (4)
1.一种基于安卓***的屏幕自适应适配方法,其特征在于它包括以下步骤:
(1)遍历布局文件得到View树结构,通过对LinearLayout、FrameLayout和RelativeLayout这三种布局文件的继承,以实现对三种布局文件自身及其子节点的管理;
(2)通过分别继承的三种布局文件中对应内部静态类LayoutParams,将子节点属性和目标属性进行配对,形成新的属性集合;然后遍历新的属性集合,并根据规定构成对应的属性对象,将该属性对象与子节点进行绑定;
(3)对所有子节点进行初步计算,得到子节点的属性value,并从子节点中取出所绑定的属性集合,将属性value添加到所对应的子节点属性上,用LayoutParams对所有属性进行封装,并将封装的属性传递回子节点;所述属性value是根据设定的UI设计交互尺寸与当前屏幕的分辨率计算得到的占空比;
(4)按照***框架的时序进行布局和绘制流程。
2.根据权利要求1所述的基于安卓***的屏幕自适应适配方法,其特征在于所述LayoutParams包括layout_width、layout_height、layout_margin、textSize和padding。
3.根据权利要求1所述的基于安卓***的屏幕自适应适配方法,其特征在于所述规定是指在遍历新的属性集合时,设定“px”为其关键字,根据该属性集合中属性value是否包含px来构建新的属性集合对象,以实现其与子节点的绑定。
4.根据权利要求1所述的基于安卓***的屏幕自适应适配方法,其特征在于在进行初步计算过程中,根据子节点中属性的要求引用baseOffset偏移校正。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610141760.3A CN105843601B (zh) | 2016-03-11 | 2016-03-11 | 基于安卓***的屏幕自适应适配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610141760.3A CN105843601B (zh) | 2016-03-11 | 2016-03-11 | 基于安卓***的屏幕自适应适配方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105843601A CN105843601A (zh) | 2016-08-10 |
CN105843601B true CN105843601B (zh) | 2019-03-22 |
Family
ID=56586941
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610141760.3A Active CN105843601B (zh) | 2016-03-11 | 2016-03-11 | 基于安卓***的屏幕自适应适配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105843601B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110968741B (zh) * | 2018-09-30 | 2022-06-24 | 武汉斗鱼网络科技有限公司 | 一种安卓***View管理方法、存储介质、设备及*** |
CN110543278B (zh) * | 2019-08-19 | 2021-08-13 | 广州点云科技有限公司 | 一种跨设备屏幕坐标的适配方法、装置以及存储介质 |
CN112530433B (zh) * | 2020-12-01 | 2023-11-07 | 杭州灵伴科技有限公司 | 一种通用语音指令生成方法、装置和增强现实显示设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102890632A (zh) * | 2012-09-18 | 2013-01-23 | 深圳市融创天下科技股份有限公司 | 一种屏幕自适应方法、***和终端设备 |
CN103744595A (zh) * | 2013-12-30 | 2014-04-23 | 广州华多网络科技有限公司 | 自适应显示方法、配置文件生成方法和装置 |
CN105094774A (zh) * | 2014-05-13 | 2015-11-25 | 大唐软件技术股份有限公司 | 一种终端***界面的展示方法和装置 |
CN105335445A (zh) * | 2014-08-13 | 2016-02-17 | 北大方正集团有限公司 | 布局显示方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101472844B1 (ko) * | 2007-10-23 | 2014-12-16 | 삼성전자 주식회사 | 적응적 문서 디스플레이 장치 및 방법 |
-
2016
- 2016-03-11 CN CN201610141760.3A patent/CN105843601B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102890632A (zh) * | 2012-09-18 | 2013-01-23 | 深圳市融创天下科技股份有限公司 | 一种屏幕自适应方法、***和终端设备 |
CN103744595A (zh) * | 2013-12-30 | 2014-04-23 | 广州华多网络科技有限公司 | 自适应显示方法、配置文件生成方法和装置 |
CN105094774A (zh) * | 2014-05-13 | 2015-11-25 | 大唐软件技术股份有限公司 | 一种终端***界面的展示方法和装置 |
CN105335445A (zh) * | 2014-08-13 | 2016-02-17 | 北大方正集团有限公司 | 布局显示方法和装置 |
Non-Patent Citations (1)
Title |
---|
Android***UI定制关键技术研究;王博;《万方学位论文数据库》;20131129;全文 |
Also Published As
Publication number | Publication date |
---|---|
CN105843601A (zh) | 2016-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104484189B (zh) | 一种应用界面的构建及设计方法 | |
US8910113B2 (en) | Methods and systems for visual code refactoring | |
CN109358851A (zh) | 图表组件的创建方法、装置及计算机可读存储介质 | |
CN105843601B (zh) | 基于安卓***的屏幕自适应适配方法 | |
CN104679488B (zh) | 一种流程定制开发平台及流程定制开发方法 | |
CN103309667B (zh) | 安卓***中定位ui控件及图片修改位置的方法 | |
CN105354022B (zh) | 一种页面布局文件生成方法及装置 | |
CN110532020A (zh) | 一种微服务编排的数据处理方法、装置及*** | |
US10853079B2 (en) | Dependency-based streamlined processing | |
US20140237443A1 (en) | System and method for supporting intelligent design pattern automation | |
CN107608675B (zh) | 基于虚拟文档对象模型的跨平台前端开发***及方法 | |
CN102866886A (zh) | 一种基于Web的算法动画可视化开发*** | |
CN109445783A (zh) | 由服务驱动的动态配置应用的构建方法及装置 | |
CN105760146A (zh) | 一种用户界面布局方法及*** | |
CN105955888A (zh) | 一种页面调试预览方法及*** | |
CN110007924A (zh) | Yang模型配置界面的自动化构建方法及*** | |
CN106302442A (zh) | 一种基于Java语言的网络通讯数据包解析方法 | |
CN104572059A (zh) | 一种修改应用名称的处理方法及装置 | |
CN106855798A (zh) | 一种界面元素属性值的设置方法、装置及智能设备 | |
CN104391703B (zh) | 快速完成页面布局的装置和方法 | |
CN106569818A (zh) | 一种快速实现MVVM模式的框架BMVVMFramework | |
CN106096145B (zh) | 一种基于状态空间的复杂***图形化建模与分析*** | |
CN109408354A (zh) | 应用组件的数据处理方法和装置 | |
CN111413876A (zh) | 一种配置app的控制页面的方法及云平台、终端设备 | |
CN107977867A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |