2011-01-20 37 views
5

我一直在使用XML文件中的pt单元。现在我需要在运行时设置元素的宽度。我怎样才能通过点设置宽度,使它与我在其他地方使用的单位相同。我假设我需要乘以分辨率和dpi。代码示例将是最好的。Android:将点转换为像素

+0

请参阅我的帖子,关于将点转换为像素http://systemdotrun.blogspot.co.uk/2014/09/whats-point-in-font-sizing.html? – Dori 2014-10-06 18:17:11

回答

10

首先,你应该认真阅读从Android开发者文档以下深度文章:

http://developer.android.com/guide/practices/screens_support.html

正中间,你会发现以下标题:

不要在您的代码中使用硬编码的像素值

// Convert the dps to pixels 
final float scale = getContext().getResources().getDisplayMetrics().density; 
mGestureThreshold = (int) (GESTURE_THRESHOLD_DP * scale + 0.5f); 
1

您可以使用dip代替pt

+1

我使用pt代替dip,因为它对非程序员更有意义。如果有人问我有多大,我可以说12分,他们可以知道那是什么。如果我说像素,那么他们可能没有意识到Android像素比PC小得多,如果我说蘸一点,他们将面临一个新词。所有这一切。我可以在运行时使用dip吗?我可以将pt转换为dip吗? – 2011-01-20 16:47:20

+0

关于您在运行时问题的问题。是的,你可以,但你必须将像素乘以屏幕比例因子(你可以用context()。getResources()。getDisplayMetrics()。density)得到)来将像素转换为DP。 – C0deAttack 2011-01-20 17:05:12