Android应用开发-UI适配

来源:互联网 发布:火焰字制作软件 编辑:程序博客网 时间:2024/05/18 18:42

Android手机各种分辨率,各种像素密度,各种屏幕尺寸,如果要对UI较真,类的很。但还是要了解清楚怎么去做。

一:主流手机分辨率及尺寸

可以在eclipse中得android工程新建一个xml布局文件,点击Graphical Layout,上方的机型选择

QVGA  ldpi     320*240  4:3

HVGA  mdpi     480*320  4:3

WVGA  hdpi     800*480  5:3

FWVGA hdpi     854*480  16:9

QHD   hdpi     960*540  16:9

720p  xhdpi    1280*720 16:9

1080p xxhdpi   1920*1080 16:9

Nexus 4   4.7   768*1280  xhdpi

Nexus 7   7.3   800*1280  tvdpi

。。。未完待续

二:sp,dp, dip, dpi, density定义,转换

dpi:像素密度,手机屏幕的清晰度,每英寸内的像素点数。就是手机厂商说的屏幕dpi。

density:就是dip和px之间的比率

metrics.density;  //是一个比值,手机厂商可以修改

metrics.densityDpi;  //dpi数据

metrics.density = metrics.densityDpi/android定义的每英寸像素密度

android默认的只有3个dpi,low、medium和high,对应 120、160、240,默认是160

比如一个机器,屏幕4存,分辨率480X800,4是对角线长度,那直接用勾股定理算对角线像素,

480*480 + 800*800 = a*a, a/4 算出来大概是 dpi = 233 像素/英寸。


dip: device independent pixels(设备独立像素), 和dp一个意思

px: pixels(像素)

sp: scaled pixels, 主要用于字体,可以跟随系统字体变换调整, 程序中使用自定义字体

Typeface fontFace = Typeface.createFromAsset(getAssets(),"fonts/STXINGKA.TTF");TextView text = (TextView) findViewById(R.id.idTvttt);text.setTypeface(fontFace);


转换:

public static int dip2px(Context context, float dipValue){       final float scale = context.getResources().getDisplayMetrics().density;       return (int)(dipValue * scale + 0.5f); } public static int px2dip(Context context, float pxValue){       final float scale = context.getResources().getDisplayMetrics().density;       return (int)(pxValue / scale + 0.5f); } 

三:app如何做ui的适应

a:在drawable各个目录下放置不同的图片

b:有特殊需求的,新建layout目录,放置布局文件

c:新建values-hdpi .... 的目录,增加dimens.xml文件

针对布局的尺寸,字体的大小等设置不同的值。

虽然dp可以用于不同的屏幕,但有时候,有些布局在不同的分辨率和屏幕尺寸下还是要不同的dp值


0 0
原创粉丝点击