首页 > 编程知识 正文

android什么意思,开发者dp调多少

时间:2023-05-06 05:07:45 阅读:172747 作者:1055

获取屏幕尺寸

从WindowManager获得

displaymetricsdm=newdisplaymetrics (;

getWindowManager ().getDefaultDisplay ).getmetrics ) ) DM;

//其中display=getwindow manager (.getdefaultdisplay ) )获取了defaultdisplay对象; 然后,display.getmetrics(DM )将屏幕大小信息分配给DisplayMetrics dm

//注意:窗口管理器可能需要通过上下文。 获取getsystemservice:windowmanagerwm=(window manager ) context.getsystemservice (context.window _ service );

DisplayMetrics和Display的关系。

Display是一个称为显示区域的对象,它可能是实际的物理屏幕,也可能只是APP应用程序的显示区域。 例如,在非全屏活动的Activity中,系统具有状态栏,因此显示区域比物理屏幕小。 显示区域的各种属性值被封装在DisplayMetrics中。 从源代码来看,DisplayMetrics中对每个属性值的注释被描述为实际的物理大小。 另外,还发现display.getmetrics(DM )这个函数基本上在取得实际的画面尺寸时被应用。 记住这个就好了。

注:构造函数DisplayMetrics不需要传递参数。 调用getWindowManager ()将检索现有活动的句柄。 然后,diplay将获取的高度宽度存储在DisplayMetrics对象中。 获取的高度宽度以像素为单位,“像素”指的是“绝对像素”而不是“相对像素”。

DisplayMetrics对象dm可提供以下信息

width=dm.widthPixels;

height=dm.heightPixels;

xdpi=dm.xdpi;

ydpi=dm.ydpi;

density=dm.densityDpi;

fdensity=dm.density;

将dp和px转换为相应的px值的示例:

int padding=4;

padding=(int ) typed value.apply dimension (typed value.com plex _ unit _ dip,4,

context.getResources ().getDisplayMetrics );

说明:

padding的单位为:dip,padding的大小为:4

虽然是4dip,但不是最终padding的真正单位。

他计算后,将4dp和密度系数相乘得到的值,实际计算的padding单位是像素,即其宽度。 根据dpi的画面不同,该值也不同。

也就是说,当dp被转换为px时,返回与dp对应的px的值。

如果此处是COMPLEX_UNIX_SP,则表示sp将转换为dp。

单位之间的变换可以使用该方法将其封装到一种工具方法中。

进一步理解:

applyDimension方法将4个像素转换为6DP(480x800 )、4dp (320 x800 )和3dp (240 x320 ),因此返回的值在不同的分辨率(getDisplayMetrics )下可获得

源代码:

publicstaticfloatapplydimension (intunit,float value,

显示测量结果)

{

switch (单元) {

case COMPLEX_UNIT_PX:

返回值;

case COMPLEX_UNIT_DIP:

return value * metrics.density;

case COMPLEX_UNIT_SP:

return value * metrics.scaled density;

case COMPLEX_UNIT_PT:

return value * metrics.xdpi * (1.0f/72;

case COMPLEX_UNIT_IN:

return value * metrics.xdpi;

case COMPLEX_UNIT_MM:

return value * metrics.xdpi * (1.0f/25.4 f;

}

返回0;

}

时间: 2016-03-19

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。