84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
ringa_lee
最近刚学这块,简单说下我的理解,如有错误,欢迎指正
关于dp和px转换,看一下他们换算公式
dpi = 屏幕水平(垂直)方向像素个数/屏幕的水平(垂直)方向的尺寸 dp = (px * 160) / (屏幕水平(垂直)方向像素个数/屏幕的水平(垂直)方向的尺寸)
你能说屏幕大小和分辨率没有关系么?他们不是直接的影响,而是间接的。
你这么理解也没问题。dp是为了适配而生的,以前你再布局文件中设置按钮宽度为20px, 在不同分辨率手机调试应用,你会发现他们是不一样大小的,所以你要手动适配,很累。如果宽度20dp,系统会经过内部换算后在不同分辨率下显示的大小是一致的,这也就是你用尺子量,为什么他们是一样大小的原因。
最后一个问题,因为没做过类似工作,就不回答了,不过你可以参考官方里面关于tv开发的指导文档
简单的说dpi(dots-per-inch)说的是每英寸上的点数,不是每英寸上的像素,ppi(pixel-per-inch)才是每英寸的像素,计算屏幕尺寸是通过ppi来计算的不是通过dpi。dp与px的转换公式是:px = dp * densitydensity这个值指的就是屏幕的逻辑密度,这个逻辑密度怎么计算呢?一般160dpi的density值为1,举个例子,一般情况下1920*1080 的density就是12X9。实际使用时还需要考虑手机状态栏和标题栏所占用的空间大小。假设是20dp大小,他在320480 上的像素是20 2 = 40px,在19201080上是 20 12 = 240px 怎么会一样大小。得到了像素px之后再根据屏幕中x,y方向上的ppi来最终决定了控件的大小。上面所述的这些值都可以通过DisplayMetrics这类来获取到,density = mContext.getResources().getDisplayMetrics().density 屏幕x轴方向的ppi = mContext.getResources().getDisplayMetrics().xdpi屏幕y轴方向的ppi = mContext.getResources().getDisplayMetrics().ydpi
讲道理。。直接用百分百布局库。。。dp这是一个坑人的设定。。。多少技术汉子和设计妹子在这dp上打的头破血流。。。
最近刚学这块,简单说下我的理解,如有错误,欢迎指正
关于dp和px转换,看一下他们换算公式
dpi = 屏幕水平(垂直)方向像素个数/屏幕的水平(垂直)方向的尺寸
dp = (px * 160) / (屏幕水平(垂直)方向像素个数/屏幕的水平(垂直)方向的尺寸)
你能说屏幕大小和分辨率没有关系么?他们不是直接的影响,而是间接的。
你这么理解也没问题。dp是为了适配而生的,以前你再布局文件中设置按钮宽度为20px, 在不同分辨率手机调试应用,你会发现他们是不一样大小的,所以你要手动适配,很累。如果宽度20dp,系统会经过内部换算后在不同分辨率下显示的大小是一致的,这也就是你用尺子量,为什么他们是一样大小的原因。
最后一个问题,因为没做过类似工作,就不回答了,不过你可以参考官方里面关于tv开发的指导文档
简单的说dpi(dots-per-inch)说的是每英寸上的点数,不是每英寸上的像素,ppi(pixel-per-inch)才是每英寸的像素,计算屏幕尺寸是通过ppi来计算的不是通过dpi。
dp与px的转换公式是:
px = dp * density
density这个值指的就是屏幕的逻辑密度,这个逻辑密度怎么计算呢?一般160dpi的density值为1,举个例子,一般情况下1920*1080 的density就是12X9。实际使用时还需要考虑手机状态栏和标题栏所占用的空间大小。
假设是20dp大小,他在320480 上的像素是20 2 = 40px,在19201080上是 20 12 = 240px 怎么会一样大小。
得到了像素px之后再根据屏幕中x,y方向上的ppi来最终决定了控件的大小。
上面所述的这些值都可以通过DisplayMetrics这类来获取到,
density = mContext.getResources().getDisplayMetrics().density
屏幕x轴方向的ppi = mContext.getResources().getDisplayMetrics().xdpi
屏幕y轴方向的ppi = mContext.getResources().getDisplayMetrics().ydpi
讲道理。。直接用百分百布局库。。。dp这是一个坑人的设定。。。多少技术汉子和设计妹子在这dp上打的头破血流。。。