热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

android8.0应用图标适配调整_适配(移动端+web端)

移动端什么是手机适配?手机适配:设计狮制作效果图,程序猿把效果图应用到不同的手机,对不同的屏幕进行界面调整的过程࿰

移动端

什么是手机适配?
手机适配:设计狮制作效果图,程序猿把效果图应用到不同的手机,对不同的屏幕进行界面调整的过程,确保界面不变形,呈现效果图的位置、尺寸、比例。

一、屏幕尺寸、屏幕分辨率、屏幕像素密度

  • 屏幕尺寸:指屏幕的对角线的长度,单位是英寸,1英寸=2.54厘米,常见的屏幕尺寸有2.4、2.8、3.5、3.7、4.2、5.0、5.5、6.0等。所以6.0的手机 6*2.54 = 15.24 厘米。
  • 屏幕分辨率:指在横纵向上的像素点数,单位是px,1px=1个像素点。一般纵向像素 * 横向像素来表示一个手机的分辨率,如1960 * 1080。(这里的1像素指的是物理设备的1个像素点)。比如(iphone6 750 * 1337) (iphone6plus 1960 * 1080)
  • 屏幕像素密度/像素密度/屏幕密度::屏幕上每英寸可以显示的像素点的数量,单位是ppi,即“pixels per inch”的缩写。屏幕像素密度与屏幕分辨率有关。

二、物理像素,CSS像素

  • 设备像素/物理像素:(分辨率)买手机的时候有一个nxm的分辨率,那是屏幕的nxm个呈像的点,一个点(小方格)为一个物理像素。它是屏幕能显示的最小粒度。设备像素也被称为物理像素,他是显示设备中一个最微小的物理部件。每个像素可以根据操作系统设置自己的颜色和亮度。任何设备的物理像素的数量都是固定的。
  • CSS像素:CSS像素是一个抽象的单位,主要使用在浏览器上,用来精确的度量(确定)Web页面上的内容。它是为web开发者创造的,在CSS或者Javascript中使用的一个抽象的层。一般情况下,CSS像素被称为与设备无关的像素(device-independent像素),简称为“DIPs”。在一个标准的显示密度下(普通屏),一个CSS像素对应着一个设备像素。
  • CSS像素与物理像素的关系:一个width为200px的元素,它占据了200个CSS像素,但200个CSS像素占据多少个物理像素取决于屏幕的特性(是否是高密度,即像素比)和用户的缩放行为。在苹果的视网膜屏幕中,视网膜的像素密度是普通屏幕的两倍,这个元素就跨越了400个设备像素,如果用户放大,它将跨越更多的设备像素。当然现在好多手机的像素比变得越来越大,比如我之前用的魅族手机和现在用的iphone 8 plus都已经达到了3,所以这个元素正常情况下就跨越了600个设备像素。
  • 设备独立像素:设备独立像素(也叫密度无关像素),可以认为是计算机坐标系中的一个点,这个点代表一个可以由程序使用的虚拟像素(比如:CSS像素),然后由相关系统转换为物理像素。
  • 位图像素:一个位图像素是栅格图像(如:png,jpg,gif等)最小的数据单元,至少1个位图像素对应1个物理像素,图片才能得到完美清晰的展示。

对于Web开发者而言:我们使用的每一个CSS和Javascript定义的像素本质上代表的都是CSS像素,我们在开发过程中并不在意一个CSS像素到底跨越了多少个设备像素。我们将这个依赖于屏幕特性和用户缩放程度的复杂计算交给了浏览器。

三、像素比

  • 像素比:它的官方的定义为:设备物理像素和设备独立像素的比例,也就是devicePixelRatio = 物理像素/独立像素(window.devicePixelRatio)
29ad7044fb533355c75f0443b034c22c.png

iphone5

6569f1212ff38074107754aced8aa351.png

iphone6 plus

四、视口

  • 布局视口:在PC端上,布局视口等于浏览器窗口的宽度。
  • 视觉视口:视觉视口是用户正在看到的区域。用户可以缩放来操作视觉视口,而不影响视觉视口的宽度。视觉视口决定了用户看到了什么。

五、UI界面设计和适配尺寸规范(iphone5 iphone6 iphone6Plus)

fb42c42520fdb7d5b75b29efd01036ad.png
dca62c0a71e58d1f63de71943b212f47.png
ce23526b019224cb133202402dad01ea.png


如果以iphone5s 为基准设计稿,适配iphone6 或者是iphone 6 plus的方法和技巧。
当旧的iPhone 5程序运行在iPhone 6上面,假如没有经过适配。旧程序自动等比放大,铺满新手机,旧程序也可以正常运行。这种方案可算是自动适配。但因为旧程序拉伸了,整体看起来有点虚,也不能更好利用大屏空间。

一套设计稿适配的前提:设计稿必须为矢量的。图片除外。比如图标,线、点、颜色块等元素都是矢量或者形状。

分为两步走:如果是一些常规界面:比如以文字、列表为主的界面,大部分是指布局相对简单的界面。不用设计师怎么切图的界面,这些基本可以让ios程序员完成适配即可。显示效果也不会太差。如果是一些定制界面:此时设计师应该手动为大屏幕重新调整设计。另外设计一些大图或者是大的图标,以满足适配iphone6.或者iphone plus

前提是你们的ios程序员需要了解苹果公司的一个工具:Auto Layout
Auto Layout (Auto Layout Guide: Introduction),可以理解成 iOS 上的 CSS,如果设计师用 Auto Layout 提供的排版语言描述出 UI 布局,那不同尺寸的 iPhone 只要同一份设计稿就可以了。

总之:适配iPhone 6/6Plus UI界面设计的要点:
1、针对iphone6 可以用高度不变,横向拉伸。或者等比拉伸
2、全矢量作图。
3、定制界面或图片位图必须额外制作大图。
4、工具栏、状态栏、导航栏的高度规范和设计字体大小等均以2:3的比例放大即可。
5、iphone的5/5S/6/6P的屏幕比例为9:16,所以比例这个问题现在不是很大,但因 Plus增加横版显示,所以建议对于一些用户量较高的软件进行重绘。
如下图所示:

5f2215856012663dde521dc992cbee7a.png

给app设计师9点建议

  • 1、以后的应用程序,都使用AutoLayout, 不要再用绝对定位。
  • 2、使用类似网页的方式来设计界面。
  • 3、设计师好,程序员也好,尽量使用点这个单位进行思考,而不要使用像素。比如,你需要做44 x 66个点的按钮,2x模式,就乘以2, 3x模式就乘以3。这样的思考方式可以大致估计到真实的物理长度。44个点,就是手机上导航栏,工具栏的高度。假如用像素思考,容易使得做出的图片过大或者过小。
  • 4、非矢量素材,就可以做尺寸最大的,之后再进行缩小。比如你需要兼容3x的屏幕,就直接做最高那种图片。
  • 5、而当使用Flash之类的矢量工具来做素材的时候,应该直接做点那个尺寸。比如44 x 66个点的按钮。就建立一个44 x 66的场景。之后再导出成2倍图,3倍图,因为矢量放大不失真。不要建立一个3x的场景,导出成大图片,再进行缩小,这样就容易失真。更理想的是直接使用矢量图。
  • 6、假如是那种导航栏,工具栏之类的背景图,需要横跨整个屏幕。可以只切一小块,让程序拉伸,拉伸方式是保持两边的像素不动,只拉伸最中间的一列像素。需要拉伸的话,横方向就不要出现一些渐变色。
  • 7、按钮的点击区域,不应该少于44像素,就算按钮的图片看起来比较小,也应该使得点按钮周围的透明区也有反应。
  • 8、可以按照你当前最方便测试机子的型号来做一些主要预览图,效果图。比如你手头有iPhone 5,可以按照iPhone 5的尺寸,320 x 568个点,需要兼容iPhone 6 Plus,就使用3x的模式。这样方便将图片放进手机里面看实际的效果。有多个测试机,就选较大的,之后再进行一些细调。假如支持iPhone 6 Plus的横屏模式,需要另外处理。
  • 9、上面说的是应用的处理方式,游戏会有些特殊。现在很多游戏,按照1136 x 768的像素尺寸来设计场景,这样可以同时兼容iPad和iPhone,并只使用一份图。iPad 1x模式下尺寸是1024 x 768像素,iPhone 6在2x模式下,是1136 * 640。这种尺寸,可以简单将场景居中显示,各自将场景拉伸到最大。

web端

目前我们pc项目的设计稿尺寸是宽度1920,高度最小是1080。

适配目标:

  • 1.在不同分辨率的电脑上,网页可以正常显示
  • 2.放大或者缩小屏幕,网页可以正常显示

对于宽度的适配:
首先设置html,body{width:100%;overflow-x:hidden;} 然后我们可以把页面分解为背景层和内容层,对于背景层,我们一般都要求完全铺开,对于内容层我们保证我们的内容都封装在盒子内,然后margin:0 auto;保持居中显示,盒子里面的内容,我们再另外调整 (内容区定宽,在达到某个断点之后更改内容区的宽度,并把某个内容显示/隐藏)

对于高度的适配:
一般情况下,页面都比较高,我们通过给每个模块设置具体的高度值来做页面,然后页面会出现导航条,我们可以拉动导航条来浏览,但是有的页面的需求是主体内容直接在不同的浏览器上都能完整显示,不通过导航条来浏览

如何做?

1、百分比的应用
百分比的应用在于主视角的定位和缩放,百分比的取值以原设计稿的尺寸为标准。什么意思呢?举个栗子,一个元素在原设计稿里,量出来距离顶部是 200px,如果写死可能是top:200px 或者margin-top:200px,现在要转成百分比,那么这个值可能就是23.3%。这个值怎么算?如果设计稿是 1080,200/1080=18.51%这样计算出来百分比的值。
但是,有个地方要注意,流体布局下,百分比的值是根据父层计算的;absolute布局的元素是根据最近的relative父层计算的;fixed布局的元素是根据window的可视区域计算的。
所以,如果要达到适配的效果,不只是当前元素需要用百分比值,其参考计算的元素也是要动态变化的。
另外还有一个就是图片缩放的问题,pc很多主视角都是切图的,但是pc不能直接用background-size。在pc我们可以直接通过img标签来插入图片,通过设置 img宽度为100%,高度auto,然后让它根据父层来等比缩放来实现。

2、js监测
需要js主要有两个原因:
上面说了,百分比是要有父层做参照物的,那么如果父层都用百分比,那就是最终是根据window来参照的,因为pc绝大部分都是宽屏设备,而且他们的比例是不一致的,我们来计算下(190是减去浏览器工具条、window桌面条、我们页面通用顶条):
设计稿:1920/(1080-190) = 2.16
14寸普通笔记本:1366/(768-190) = 2.36
所以,我们不能宽高都100%按照屏幕尺寸来计算。另外考虑到主要是高度对pc页面的主视角影响比较大,我们需要借助js来计算确定一个最小高度临界值(当然这个可以用css的min-height来实现);
另外一个是,通过js判断最小高度临界值,再加上这个最小临界值的class,为了处理那些特殊的布局或者百分比无法完全解决适配的元素,比如字体的相关布局



推荐阅读
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • 近期,微信公众平台上的HTML5游戏引起了广泛讨论,预示着HTML5游戏将迎来新的发展机遇。磊友科技的赵霏,作为一名HTML5技术的倡导者,分享了他在微信平台上开发HTML5游戏的经验和见解。 ... [详细]
  • 网络爬虫的规范与限制
    本文探讨了网络爬虫引发的问题及其解决方案,重点介绍了Robots协议的作用和使用方法,旨在为网络爬虫的合理使用提供指导。 ... [详细]
  • 本文将带你快速了解 SpringMVC 框架的基本使用方法,通过实现一个简单的 Controller 并在浏览器中访问,展示 SpringMVC 的强大与简便。 ... [详细]
  • 深入解析 Lifecycle 的实现原理
    本文将详细介绍 Android Jetpack 中 Lifecycle 组件的实现原理,帮助开发者更好地理解和使用 Lifecycle,避免常见的内存泄漏问题。 ... [详细]
  • JComponentJLabel的setBorder前言用例2205262241前言setBorder(Border边框)实现自JComponentjava.awt.Insets ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
author-avatar
飞龙在天2602911735
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有