Android那些你可能没了解过的---碎片化

                                                  

            安卓碎片化是什么?

           按最简单的理解,就是安卓平台越来越复杂,差异越来越大,屏幕小到2.3寸-现在6寸多(平板除外),分辨        率 的不同,版本各异。

         

           安卓碎片化带来的后果?

           这些都逐渐成为安卓系统发展的障碍,碎片化严重不仅造成安卓系统混乱,也导致安卓应用的隐形开发成本的增       多,同时也给我们开发安卓应用程序加大了不少难度。而且最终会导致安卓性能兼容变差 当然这个知识 顺着这       个观光,谷歌公司肯定也会进行改善。但是总感觉 如果照着样这样,安卓难免因为碎片化得癌症(心疼机器         人)。但是笔者总有一个感觉,以后的安卓会摆脱碎片化(并不是完全)。

            

         浅谈碎片化。

        记得在那里看过这么一句话: 100个Android手机制造商拿到Android内核之后,可以制造出100种搭载不同硬件平台、界面的Android手机,虽然是基于Android的,但实际上,已经不再是原来的Android了,经过各种改造之后,已经变成100个“独立”的Android ,这就是碎片化。 好像说的挺有倒理,说道这里又想到“安卓定制

          有这么不科学的调查,我问朋友们“你喜欢Android的定制软件吗?”一个人说不喜欢,另一个人做呕吐状。基于此,我认为没有人愿意在他们的智能手机上预装定制软件。很多廉价的Android设备预装了很多“定制软件”,用户发现他们无法删除这些定制软件。不论多么讨厌他们,这些软件的图标都在应用程序栏里嘲弄着用户,这些预装程序还会占用过多的内存而使得开关机速度变慢。 Android系统通过低价机市场扩大了在操作系统市场的占有率,但也让很多用户感到不满。我能理解为什么运营商希望预先安装定制软件,但请让用户不喜欢他们时可以将其删除。

            

          

           碎片化的小知识:

               

v11 v14表示的是系统的版本号
v10 2.3
v11 3.0
v14 4.0
v21 5.0
v23 6.0
看到这张图,有没有感觉似曾相识。
对应的 可以了解一下。

系统的碎片化:
可以看出现在大部分机型的版本。 版本的各异也造成了系统的碎片化。
优化屏幕的碎片化:
屏幕分辨率 720*1280
单位 px:像素
屏幕尺寸 4.7寸 屏幕对角线的长度 4.7英寸
像素密度:dpi/ppi 每一英寸包含的像素点
dp:设备独立像素 

计算DPI:
对角线的像素点 = 开根号(1280^2+720^2 )

开根号(1638400+518400)= 1468 px
dpi = 1468/4.7=312dpi

Android定义
160dpi mdpi 1dp = 1px
240dpi hdpi 1dp = 1.5px
320dpi xhdpi 1dp = 2px
对于简单的规则图像,可以用xml文件画出来 480dpi xxhdpi 1dp = 3px

规定 在像素密度在160dpi此时
1dp = 1px

在实际工作中,ui的小伙伴们是以px来标识出长度的,这样我们就需要将px转换成dp,使用以下公式转换:

px = dp * (dpi / 160);

(ldpi(120dpi),mdpi(160dpi),hdpi(240dpi),xhdpi(320dpi))

我在网上看见类似以下的代码:

// The gesture threshold expressed in dp
private static final float GESTURE_THRESHOLD_DP = 16.0f;

// Get the screen's density scale
final float scale = getResources().getDisplayMetrics().density;
// Convert the dps to pixels, based on density scale
mGestureThreshold = (int) (GESTURE_THRESHOLD_DP * scale + 0.5f);

// Use mGestureThreshold as a distance in pixels...


1)禁用px,尽量使用 match_parent wrap_content layout_weight,如果需要固定 尺寸,尽量dp
2)准备多套图片
按照市场主流屏幕分辨率准备1920*1080 1280*720
放到xxhdpi xhdpi
3)使用.9图片
.9图片作用:在图片最外层指定1px的大小,设置选择性不失真的区域

当我们使用图片的时候也要注意类似的问题

这里我首先介绍两个定义

1.pre-scaling of resources:这个很简单,我们的项目中有drawable-ldpi,drawable-mdpi,drawable-hdpi,drawable-xhdpi这几个文件夹中就放着pre-scaling的图片


2.auto-scaling of pixel dimensions and coordinates:当在manifest文件中设置android:anyDensity=“false”,或者用编码的方式设置bitmap的inScaled为false的时候,系统会自动在显示的时候转换绝对的px坐标和长度,使ui元素还是能正确地以在mdpi中应该显示的大小显示出来。

对于简单的规则图像,可以用xml文件画出来:

a:创建资源文件

b.编辑资源文件

5)使用限定符
land 横屏
port 竖屏
w820dp 屏幕宽度大于820dp
sw240dp 屏幕较短的边大于240dp

这几个文件夹在项目的文件下都能看到。


               

              

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值