您的位置:首页 > 移动开发 > Android开发

Android中dp、px转换案例分析

2015-04-19 18:44 281 查看
文章摘要:

Android开发中,界面显示很重要,常用的是dp和px的认识,还有其转换。本文以个人前两天碰到的问题来演示dp、px转换过程。

1、问题描述

系统登录界面有自己开发的输入键盘,在像素1280*728的Android设备上正常显示,而在1920*1128的设备上却显示变小,且相对位置发生改变。

2、问题分析

1)键盘为自定义的布局,弹出位置设定如下:

numkeyPop.showAtLocation(dialog, Gravity.NO_GRAVITY, width1, height1);

2)参数含义

dialog:依附的view

Gravity.NO_GRAVITY:不采用相对坐标

width2, height2:显示的坐标起点,单位是px

3)源码分析

int width = wm.getDefaultDisplay().getWidth();

int width1 = (width / 2) + 216; //查看布局,登录框是430dp,216的单位是dp

4)分析总结

参数值传入错误,单位不一致。

3、解决方法

对dp进行转换,换成px

步骤如下:

1)获取像素密度

float scale = context.getResources().getDisplayMetrics().density;

2)转换

int width2 = (int)((width / 2) + 216 * scale + 0.5f);

3)修改参数

numkeyPop.showAtLocation(dialog, Gravity.NO_GRAVITY, width2, height2);

4、案例总结

1)1280*728上 1dp =
2.9px,1920*1128上 1dp =
4.4px

2)dp是一个相对单位

3)java方法中传递的参数的单位要注意

4)dp、px及其转换参考
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: