我正在制作一个日历,我需要一个网格。问题是边界,或者说每个网格之间的空间,这是我用来模拟网格的,是1 dp。但它相当厚。我正在看其他有边界的日历应用程序,它们非常薄。即使我使用drawable形状并使其成为1dp,它仍然有那个厚度。我试过用Ideo 5,但似乎不起作用。这不可能吗?
drawable
x8diyxa71#
Android确实允许您将dp的分数值输入到XML中,但我不确定是否会推荐它,因为结果变得不那么容易预测/计算。设备使用(基本上)以下公式将dp值转换为像素:
dp
px = (int)(scale * dp + 0.5)
(i.e.设备密度标度四舍五入到最接近的整像素值)scale值将基于设备的屏幕密度:
scale
因此,对于上述密度,0.5dp将导致{1 px,1 px,1 px,2 px},而1dp将是{1 px,2 px,2 px,3 px}。1 px},因为在上述公式中,任何小于1的值都将解析为单个像素,除非该值显式为0dp(不可能绘制比单个像素宽度更薄的内容)。如果你想确保使用尽可能薄的宽度,最好用px来显式定义宽度,而不是像dp这样的缩放单位。设置1px的值将在所有设备上使用单个像素绘制,并且比希望0.5dp或0.1dp做同样的事情更具可读性。
0.5dp
1dp
0dp
px
1px
0.1dp
hmae6n7t2#
是的。我设置为0. 1dp,它比我的4“ME860 DRIOD上的1dp小。
zy1mlcev3#
答案很简单,是的,你可以。简单地解决您的问题(即实现尽可能薄的线)将thinckness设置为:1像素我建议像素,因为它不依赖于设备,它是最小的措施,此外,它不会被转换成另一种形式,因此没有舍入错误,也没有任何意外的渲染…让我解释一下。Android布局xml文件,或尺寸xml值文件,将允许您输入dp的十进制值。然而:我已经在许多设备上试验了从0. 1dp到1dp的几个值。根据设备的不同-它可能不会像你期望的那样渲染。在像素密度较低的设备上,即使编码为具有相同的像素密度,线条也可能在一侧比另一侧更厚......这是由于截断转换为dp到px的值时引入的不准确性-(如Devunwired所述):
像素**(px)是最小的单位,必须是一个整数。所以-如果你的目标是简单地拥有最小的线条/边框,为什么不将其设置为:1像素**我希望这有帮助!
xnifntxz4#
把颜色调淡一点,这样看起来就不那么浓了。
4条答案
按热度按时间x8diyxa71#
Android确实允许您将
dp
的分数值输入到XML中,但我不确定是否会推荐它,因为结果变得不那么容易预测/计算。设备使用(基本上)以下公式将dp
值转换为像素:(i.e.设备密度标度四舍五入到最接近的整像素值)
scale
值将基于设备的屏幕密度:因此,对于上述密度,
0.5dp
将导致{1 px,1 px,1 px,2 px},而1dp
将是{1 px,2 px,2 px,3 px}。1 px},因为在上述公式中,任何小于1的值都将解析为单个像素,除非该值显式为0dp
(不可能绘制比单个像素宽度更薄的内容)。如果你想确保使用尽可能薄的宽度,最好用
px
来显式定义宽度,而不是像dp
这样的缩放单位。设置1px
的值将在所有设备上使用单个像素绘制,并且比希望0.5dp
或0.1dp
做同样的事情更具可读性。hmae6n7t2#
是的。
我设置为0. 1dp,它比我的4“ME860 DRIOD上的1dp小。
zy1mlcev3#
答案很简单,是的,你可以。
简单地解决您的问题(即实现尽可能薄的线)将thinckness设置为:1像素
我建议像素,因为它不依赖于设备,它是最小的措施,此外,它不会被转换成另一种形式,因此没有舍入错误,也没有任何意外的渲染…让我解释一下。
Android布局xml文件,或尺寸xml值文件,将允许您输入dp的十进制值。
然而:我已经在许多设备上试验了从0. 1dp到1dp的几个值。根据设备的不同-它可能不会像你期望的那样渲染。
在像素密度较低的设备上,即使编码为具有相同的像素密度,线条也可能在一侧比另一侧更厚......这是由于截断转换为dp到px的值时引入的不准确性-(如Devunwired所述):
像素**(px)是最小的单位,必须是一个整数。所以-如果你的目标是简单地拥有最小的线条/边框,为什么不将其设置为:
1像素**
我希望这有帮助!
xnifntxz4#
把颜色调淡一点,这样看起来就不那么浓了。