首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >setWidth(整像素)使用dip还是px?

setWidth(整像素)使用dip还是px?
EN

Stack Overflow用户
提问于 2010-03-09 11:29:09
回答 6查看 77.1K关注 0票数 97

setWidth(整像素)是以设备独立像素还是物理像素为单位?例如,setWidth( 100 )是否将视图的宽度设置为100个像素或100个像素?

谢谢。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-03-09 13:06:18

它使用像素,但我敢肯定你想知道如何使用dips代替。答案就在TypedValue.applyDimension()中。下面是如何在代码中将dips转换为px的示例:

代码语言:javascript
复制
// Converts 14 dip into its equivalent px
Resources r = getResources();
int px = Math.round(TypedValue.applyDimension(
    TypedValue.COMPLEX_UNIT_DIP, 14,r.getDisplayMetrics()));
票数 225
EN

Stack Overflow用户

发布于 2013-02-17 22:15:27

在代码中获得恒定次数的正确方法是创建一个包含DP值的资源XML文件,如下所示:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="image_width">100dp</dimen>
    <dimen name="image_height">75dp</dimen>
</resources>

然后在代码中引用资源,如下所示:

代码语言:javascript
复制
float width = getResources().getDimension(R.dimen.image_width));
float height = getResources().getDimension(R.dimen.image_height));

您返回的浮点数将根据设备的像素密度进行相应的缩放,因此您不需要在整个应用程序中重复使用转换方法。

票数 25
EN

Stack Overflow用户

发布于 2014-11-01 14:35:38

方法setWidth( 100 ),设置100像素作为宽度(不在dp中).So你可能会面临不同的安卓phones.So宽度变化的问题使用dp中的测量而不是pixels.Use下面的代码来获得样本width=300px和height=400px的dp中的测量值。

代码语言:javascript
复制
int width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 300, getResources().getDisplayMetrics());

int Height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 400, getResources().getDisplayMetrics());
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2406449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档