屏幕适配

屏幕适配

 

屏幕尺寸

屏幕的对角线的长度,单位是英寸,英寸=2.54厘米

在适配中不是重点

 

屏幕分辨率

横纵向上像素点数

单位是px,1px=1个像素点

手机一般以 纵向像素*横向像素表示,如1920*1080

 

屏幕像素密度

每英寸上的像素点数

单位是dpi,"dot per inch"的缩写

屏幕像素密度与屏幕尺寸和屏幕分辨率相关

Nexus 5 屏幕 4.95 inch

1920*1080

DPI = 445

√(1920^2+1080^2) / 4.95 = 445

 

以上和硬件相关的

 

dpi 屏幕像素密度,和硬件相关的

px 像素

dp = dip

dip = dp

"density independent pixels" 即密度无关像素

以160dpi为基准,1dip = 1px

 

sp

scale-independent pixels

可以根据文字大小首选项进行缩放

12 14 18 22 推荐的

不要使用奇数 小数

 

mdpi 120-160dpi 启动图标为 48 * 48 px

hdpi 160-240dpi

xdpi 240-320dpi

xxdpi 320-480dpi

xxxdpi 480-640dpi

 

mdpi 2

hdpi 3

xdpi 4

xxdpi 6

xxxdpi 8

 

启动图标相关:

启动图标为 48*48dp

mdpi 48*48 px

hdpi 72*72 px

xdpi 96*96 px

xxdpi 144*144 px

xxxdpi 192*192 px

Android也支持低像素ldpi的屏幕,但无需为此费神,系统会自动将hdpi尺寸的图标缩小到1/2进行匹配。

 

     <LinearLayout

         android:id="@+id/activity"

        android:layout_width="match_parent"

         android:layout_height="wrap_content"

         android:orientation="horizontal">

         <Button

              android:id="@+id/my_weight_1"

                android:layout_width="30dp"

                android:layout_height="wrap_content"

               android:text="1"

               android:layout_weight="0"/>   >>> 保持比例的部分设置为0

         <Button

              android:id="@+id/my_weight_2"

              android:layout_width="0dp"

android:layout_height="wrap_content"

android:text="2"

android:layout_weight="1"/>   >>> 拉伸的部分设置为1

         <Button

              android:id="@+id/my_weight_3"

android:layout_width="30dp"

android:layout_height="wrap_content"

android:text="3"

android:layout_weight="0"/>   >>> 保持比例的部分设置为0

     </LinearLayout>

 

竖屏效果:

横屏效果:

 

weight

计算出的宽度 = 原来宽度 + 剩余空间所占百分比宽度

     <LinearLayout

         android:id="@+id/linearLayout3"

        android:layout_width="match_parent"

         android:layout_height="wrap_content"

         android:orientation="horizontal"

         android:layout_below="@id/linearLayout2">

         <Button

              android:id="@+id/my_weight_7"

               android:layout_width="match_parent"

               android:layout_height="wrap_content"

               android:text="7"

               android:layout_weight="1"/>

         <Button

              android:id="@+id/my_weight_8"

               android:layout_width="match_parent"

               android:layout_height="wrap_content"

               android:text="8"

              android:layout_weight="2"/>

     </LinearLayout>

效果图:

设屏幕宽度为L

my_weight_7 button

2/3L = L + (L-2L) * 1/3

 

my_weight_8 button

1/3L = L + (L-2L) * 2/3

 

如果想按照自己分配的weight去显示

需要把相应的长度

layout_widthlayout_height 写为 0dp

 

-sw411-xxhdpi 是如何计算出来的?

411 = 1080 * (160/420)

1080为(屏幕宽的分辨率)

160为固定值

420为DPI的值

 

dpi = 420 所以应选用 xxhpi, 如下:

hdpi 160-240dpi

xdpi 240-320dpi

xxdpi 320-480dpi

xxxdpi 480-640dpi

 

values-sw600dp-land 横向

values-sw600dp-port 纵向

 

.9.png

图片是可伸缩的

左边,上边的黑色点是拉伸点

拉伸比例是按照点数比例计算的

 

右边,下边是间隔区域,相似padding 属性

除了划线的部分,其余的为 padding

 

values-480*320可以以它为基准,相应把别的分辨率都换算出来

values-800*480

资源文件可以按照分辨率来

把相应的分辨率都写入进入

这样就能保持显示出来的效果大致相似

用px为单位

不建议用,只是一个思路

 

mipmap-hdpi

mipmap-mdpi

mipmap-xdpi

mipmap-xxdpi

用于放图标的

 

备用位图

Genymotion 超快的模拟器

 

目录:platform_development/samples/training/multiscreen/
下载地址:https://github.com/android/platform_developments

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值