大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
公司有一个基于Android的平板产品,在医院中使用。也就是说软件和硬件(平板)都是我们提供给医院的,但是我们是个软件公司,所以平板是我们从设备制造商采购来的。一开始的计划是我们只需要采购同一个型号的设备( 设备A ),所以这个项目几乎不用考虑屏幕适配的问题。但是最近可能公司和设备商没有完全谈拢,我们又换了一批新的设备( 设备B )。设备B从屏幕大小上来看,是和设备A是一模一样的,但是却出现了和设备A差距较大的显示效果
创新互联网站建设公司一直秉承“诚信做人,踏实做事”的原则,不欺瞒客户,是我们最起码的底线! 以服务为基础,以质量求生存,以技术求发展,成交一个客户多一个朋友!专注中小微企业官网定制,成都网站设计、成都做网站,塑造企业网络形象打造互联网企业效应。
先通过日志打印一下两个设备的屏幕相关信息
设备A 输出结果:
widthPixels: 1280
heightPixels: 737
densityDpi: 210
density: 1.3125
设备B 输出结果:
widthPixels: 1280
heightPixels: 800
densityDpi: 160
density: 1.0
这里主要三个不同,分别是 heightPixels 、 densityDpi 、 density ,我们一个个来分析
问题一:heightPixels不同
一开始我是有点困惑的,这个737是什么鬼,两个屏幕明明是一样大的,为什么一个高800,一个高737?
其实, heightPixels 代表的是屏幕有效的高度,就是
所以,其实就是一个设备带导航栏,而另一个不带,虽然我在应用中隐藏了导航栏,但是这个高度不管你有没有隐藏导航栏,这个值都不会改变。
综合上述,这两台设备的分辨率,其实都是1280像素x800像素。所以 heightPixels 不同,实际上对我们屏幕适配并没有什么影响
问题二:densityDpi不同
densityDpi 就是我们常说的DPI,查阅了计算公式是下面这样的
但是, densityDpi 和屏幕分辨率其实是可以通过adb命令改变的
那这个公式是不是感觉有点奇怪呢,两个都是变量,那对角线的尺寸岂不是也变了?但是显然一个设备生产出来以后,屏幕对角线尺寸肯定是固定的。
查阅了百度百科中对DPI的定义
所以,这里我是这么认为的(如果说的有问题欢迎指正)
我们一开始使用 wm size 和 wm density 查询到的就是原始的屏幕分辨率和DPI,但是之后我们使用adb命令修改后, 实际上屏幕分辨率并没有变化,变化的是图像分辨率,即一个图像像素,其实是已经补充了很多个屏幕像素,从而表现出页面上的元素大小发生了变化
问题三:density不同
density其实就是一个比例系数
所以两个设备的 density 不同,归根结底就是 densityDpi 不同
经过我们上面的分析,我们可以得出这样的结果
两个设备屏幕宽高尺寸相同,分辨率相同,项目中使用dp作为单位,但是原始 densityDpi 不同,导致了两个设备上UI元素显示的大小(px)不同
对于同样尺寸的设备,我们当然希望两端在UI元素的大小上显示效果是一致的,但是Android碎片化严重,即使同样尺寸同样分辨率的设备,也有可能出现DPI不同,这就是Android屏幕适配最大的问题
那我们如何来解决这个问题呢?
Google提供了资源目录的 限定符规则
手机宽度dp值计算方法:
这里我提供了一个自动生成sw文件工具类
由于一开始的UI设计是以设备A为基准的,所以设备A(即values-sw609dp)中的dp值保持不变,设备B(即values-sw800dp)中的1dp = 1.3125dp,这样两个设备上的UI显示就达到了一致的效果
经过我们上面的分析,应该有很多人会发现,我们使用adb命令 wm density 210 的将设备B的 densityDpi 设置成设备A一致,也能达到一样的效果。但是这也只能在开发调试过程中这么做,我们不可能通过这种方法去修改厂家或者所有用户手中的设备
通过本文的分析,你是否对android屏幕的碎片化有一个新的理解呢,并不是分辨率和屏幕大小完全相同的两个设备,它们的页面显示效果就一定是一致的
一、在华为如日中天的时候,华为都没敢推鸿蒙系统,而是把鸿蒙系统当作“备胎”慢慢发展。现在,华为被制裁了,只能把鸿蒙系统紧急推出来了。至少,鸿蒙是仓促上马的系统,却要和一个已经发展许多年,非常成熟的安卓系统竞争,还能轻而易举地赢了!三星真要哭死在厕所里了。昔日三星联合了英特尔搞出来的Tizen系统,还是按部就班进行的研发,依旧是无法弄出自己的生态圈,最后只能沦落成家电的系统了。从这个角度来看,安卓工程师不用太担心安卓的生态系统被威胁,鸿蒙的生态圈很难发展到能够与安卓比较。
二、华为自己都说了,鸿蒙系统当初设计就是想做家电的系统,是与三星Tizen类似的东西,主要应用方向是家电和物联网。现在是因为制裁的原因,赶鸭子上架成为了手机系统。这种临时改变用途的系统需要大动干戈才能完善对手机的应用支持。可以想象,如果鸿蒙系统对手机的支持有缺陷的话,做手机应用就会非常困难。也因此有理由相信,现在鸿蒙手机如果对安卓应用的支持特别完美,就更说明鸿蒙的“拉皮”可能性了。如此一来,安卓工程师就安心开发安卓应用就好了,因为鸿蒙一定可以完美运行你的应用,这就没有放弃安卓开发的必要了嘛!
至此,我想现在考虑鸿蒙把安卓的阵地攻破了实在是太早了。所以,大概率,没有哪个安卓工程师会放弃安卓去弄鸿蒙,顶多是测试一下应用能不能在鸿蒙环境下运行罢了。还是把兼容性这件事儿交给鸿蒙去搞吧。
鸿蒙出来的话,安卓工程师并不会失业,取决于自己想不想在鸿蒙上开发软件。
鸿蒙的应用程序开发,主要是基于Java和NodeJS,基于Java的整体框架结构与安卓极其相似,加上其开发环境DevEco Studio与Android Studio同宗,安卓工程师可以极短的时间迅速上手鸿蒙应用程序的开发。当然,一些做前端开发的小伙伴也会进入鸿蒙平台进行开发,但这部分小伙伴往往是会用一套代码、同时适配多个应用平台(类似国产的uni-app),这些本身就在和安卓开发有一种竞争关系,并不会因为鸿蒙的生产而发生多大变化。
另外鸿蒙的开发平台,也可以很轻松在智能屏、智能手表、车载智能设备等设备上调试开发,总体来说,如果鸿蒙火起来,就会有更多的软件开发需求了,安卓开发工程师会更吃香。建议大家多多接触鸿蒙生态,多学一点知识对自己是一个积累储备,总不会是坏事。
错,是谷歌、微软和苹果要倒闭了!
鸿蒙系统配备方舟编译器,兼容安卓应用,但运行效率……(此处省略1000字,翻2019年文章)……鸿蒙系统能在所有设备运行,支持手机、电脑、平板、物联网……(此处省略1000字,翻2019年文章)……
我想说的是你们太不懂华为了,其实鸿蒙早已开发完成并且随时可用!他一直在忍,在等一个机会……
非常肯定的说不会失业。我们知道鸿蒙OS有很多地方借鉴了Android,甚至是说底层有很多Android的代码,开发思维很多都跟Android相似。比如写UI有Java方式和JS方式,而Java方式的UI和Android如出一辙,在Xml里面写界面,在Java里面获取控件设置数据,处理逻辑等等。鸿蒙里面也有Intent来处理跳转传数据,而鸿蒙的Ability更是和Android里面的Context,Activity这一套很相似,分前台界面显示,后台不可以的服务,以及用来传数据的Ability,就像Android里的Content Provider。当然它们之前也有不同,但你在方方面面都能看见Android的影子,所以Android开发者转鸿蒙平台开发,相比于其它平台的开发者,是天然有优势的,只要企业有需要,几乎所有Android开发在适应一段时间后都能上手做项目了。
相反的是鸿蒙生态能不能发展起来,能不能解决Android,iOS生态的一些痛点。能否吸引企业去开发鸿蒙应用,开发时,能否降低成本。当企业花大量的人力,物力开发出来的应用,没用户使用,或者收益甚微,企业是不愿意去尝试的。要想发展鸿蒙生态,这方面不仅华为自己要努力,一些国企,知名大企些带头作用,像央视影音,新华网,京东等等已经发布鸿蒙平台的APP了。
如果鸿蒙生态发展的很好,有大量的用户大量的应用,挤占了Android和iOS的市场占有量,Android开发者能迅速转到鸿蒙平台上,iOS的开发者要怎么办呢。也许你会说iOS根本不需要考虑,Android的市场占有率这么高iOS还不是活的好好的,当年诺基亚也没想到自己会倒的这么快。
作为一名android开发工程师,我想说,失业是不可能的,这辈子都不可能失业!
也许身为移动端开发人员的我们,正处于一段乱流之中!
首先,来谈谈android的碎片化问题。
仅仅2014年,全球支持Android的机型为18796种,再来看看国内,华为、小米、oppo、vivo...,android手机厂商也很多,每个品牌都是基于android开源系统改造,android开发人员要在完成软件功能的同时,对不同品牌的手机做功能适配,非常麻烦。
除了手机品牌数量多,手机屏幕的尺寸适配问题也很麻烦,往往一个软件的开发,有60%的时间在适配工作上。
是的,现在鸿蒙来了,意味着什么?意味着android开发人员有必要或者就必须去学习一门新语言、一个新系统的开发、适配,对于一个企业来说,要么就增加人工成本请一个鸿蒙系统开发人员,要么就强制在职android开发人员重新开发一遍软件适配鸿蒙系统。
基于此,不知道有多少android开发人员会买账,不知道多少企业会加个鸿蒙系统平台,不知道鸿蒙系统能不能站住脚推广开来。
虽然现在鸿蒙系统可以兼容android应用,但以后必然会两级分化。
如果鸿蒙系统没有革命性的突破,如果美国不再卡脖子,如果没有国家的干预措施,只靠平民大众自觉爱国的方式支持鸿蒙系统,我看很悬啊,毕竟,苹果手机在国内的销量一如既往!!!
再者,在手机行业,小米、oppo等手机厂商和华为本是竞争关系,会放弃自己的系统换成鸿蒙系统吗?这样的话,其他手机厂商的生存空间会一天不如一天,就算鸿蒙开源使用,也只不过走android碎片化的老路!
系统之争本就不是一朝一夕,不用担心会不会失业,路,还很长!
实际上安卓系统的成功起初很大得益于中国市场,可以说中国市场选择谁,成功的几率非常大, 鸿蒙系统出世以后,安卓开发工程师会失业吗? 暂时不会的,毕竟有一个过程,也是一种博弈过程,实际上安卓系统与鸿蒙系统现在没必要刻意追求细小细节的优劣,前提是由于美国对中国的打压,谷歌断供服务华为,别看只是说切断了华为的服务,但是这种破坏性本身就是让各国包括中国对美国不可能再信任,今天是华为,明天有可能是另一家企业,无论美国怎么说,谷歌再会解释,实际上这种行为已经打破了行业规则,后期效应就是不可能再一味的依靠美国,各国发展自己的系统,中国也必须的推出自己的系统,大势所趋,安卓体系以后会慢慢萎缩,安卓开发工程师失业不失业就凭他们个人能力了,肯定减员,估计未来的鸿蒙系统会越来越强大,市场份额是固定的,就看谁的市场大了,也不排除安卓开发工程师跳槽来鸿蒙。
开发鸿蒙只能在华为支持的鸿蒙设备上运行,开发android,可以在所有安卓设备包括鸿蒙设备上也兼容运行,何来失业
做安卓的一天不用就能写鸿蒙。可以忽悠甲方加钱了[泪奔]
不会,确切的说鸿蒙的出世,给Android工程师提供了更多的机会。鸿蒙生态的建设,安卓工程师会贡献绝对的力量。
另外,从技术上讲,安卓开发的应用完全兼容鸿蒙,安卓工程师开发安卓应用的时候,可能会针对鸿蒙系统做适配工作,工作量的增加,工程师的价值也会增长。
是得我就是干这个 但是我都计划改行了
整个安卓平台的差异化越来越大。
市场上存在的各种安卓系统之间的版本差异只是安卓平台碎片化问题的一个方面。总的来说,安卓平台碎片化问题是指随着安卓系统快速演化。
不同软硬件厂商生产的安卓设备以及定制的安卓系统层出不穷,导致安卓设备之间的差异越来越大,整个安卓的生态系统严重分裂而带来的一系列问题。在这种碎片化环境中,一个安卓应用在不同的设备上可能呈现出完全不同的行为。
为了保证产品能够适配各式各样的移动设备,安卓开发者们必须针对不同的设备对其开发的应用进行特殊的处理。无疑,这给开发者带来不少负担,也使得安卓应用的兼容性面临着巨大的挑战。
扩展资料
兼容性问题顾名思义能够导致应用在不同设备上的表现出不一致的行为。这种不一致具体表现形式为:应用在特定的设备上可能会出现功能性问题,性能问题,或者无法适配而使用户体验下降。
以设备屏幕大小的问题为例,现存的安卓设备屏幕尺寸、分辨率千差万别,屏幕长宽比例也是不尽相同。对于应用开发者来说,如果没有针对不同屏幕尺寸对界面进行优化,那么他们的产品应在部分设备上就可能造成布局问题,而使得用户体验受到严重的影响。
参考资料来源:百度百科-安卓碎片化
Android的碎片化主要表现在:第一,终端的碎片化,即开发者需为不同版本操作系统和不同硬件配置的终端进行应用适配;第二,应用商店的碎片化,除官方Android Market外,存在各OEM厂商内置并运营的商店,渠道过多且分散。如何解决这一分裂问题,在开源的同时保障用户及开发者利益,维护产业联盟稳定发展,成为谷歌Android之后是否能获得成功的重要因素。
100个Android手机制造商拿到Android内核之后,可以制造出100种搭载不同硬件平台、界面的Android手机,虽然是基于Android的,但实际上,已经不再是原来的Android了,经过各种改造之后,已经变成100个“独立”的Android ,这就是碎片化。 这100个Android手机的运行环境完全不一样,即使是搭载完全相同的硬件,不同品牌的机器,运行速度,软件兼容性都会有区别,这是厂商们各自改造的结果。 任何成功的智能操作系统都是由庞大的软件资源支撑起来的,这要求系统和硬件有一定的一致性,这才能确保软件的兼容性,而个人和团体开发的第三方软件也有一定的规范,以确保软件和设备完全兼容。 而由于Android完全免费以及完全开源的性质,最终导致Android设备的软件兼容性变差,间接加大了软件开发的难度(主要难度是让软件在更多的设备上运行),最终会导致一个结果:由于开发难度高,开发成本增大,软件开发商和软件开发者们会放弃开发。最终,Android会因为“失血过多”而死。 完全免费和完全开源造就了android,也毁了android ,谷歌试图挽救,但已经无能为力了,因为谷歌已经失去了对Android的控制,现在的android,已经不再属于谷歌。 以仅代表个人观点,有不同意见的请文明评论,谢谢! 我是Moden又烧了!
android碎片化指安卓系统被各个手机厂家改成自已的个性化版本,并没有统一的版本。