Android中dp、px转换案例分析

文章摘要:

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.9px1920*1128上 1dp = 4.4px

    2)dp是一个相对单位

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

    4)dp、px及其转换参考

          


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值