问题标签 [density-independent-pixel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
63517 浏览

mobile - dp、dip、dpi、ppi、像素和英寸如何关联?

我正在阅读dp、dip、px、sp 测量值,但我仍然对 dp/dpi vs ppi vs px vs inch 有一些疑问。我无法比较它们……一英寸是最大的吗?

他们说 160 dpi 意味着每英寸 160 个像素。这是否意味着 1 英寸包含 160 个像素?

他们还说 160 dpi 屏幕上的 1 个像素 = 1 dp。这是否意味着 1 像素和 1 dp 相等?

最后,我们为什么要使用 dp 而不是 px?我知道这是理想的,但为什么呢?

0 投票
1 回答
1051 浏览

android - Android:当 DIP 分辨率因设备而异时如何使用 DIP

当 DIP 的数量因设备而异时,我真的对 Android 上的 DIP 的目的感到困惑,即使在相同大小的分类中也是如此。(如中型显示器)

我现在正在开发一个游戏,例如,我在游戏中显示全屏位图作为背景..

像这样:drawSprite(bmBackground, 0, 0, 533, 320, canvas);

533x320 是我的三星 S2 显示器的 DIP 分辨率。但在某些 HTC 上,也属于中等显示器级别,分辨率可能是 480x320,然后我的背景不适合屏幕,除非我动态计算新的 DIP 尺寸。

我认为 DIP 的想法是我们不必一直对不同的屏幕/分辨率进行所有这些考虑。在 iPhone 上,即使像素分辨率相同,3 和 4 也具有相同的 DIP 量

我很困惑..

0 投票
2 回答
739 浏览

android - 让我在画布上的位图始终为“全屏”

所以我在画位图的地方有这个画布

一个例子是位图作为背景..所以我将在我的 533x320 dip Samsung S2 上制作这个全屏

所以,当我在一个 480x320 dip 的 HTC 上加载同一个应用程序时,我的背景图像现在会比屏幕大 - 这通常是如何处理的?

我知道有些人可能会回答说我可以只检查 DIP 大小并使用它.. 这也适用于这个背景图像.. 但是我拥有的 10 个国际象棋棋子没有一个不在屏幕之外,因为它扩展了 HTC 的 480dp 但在我的 533dp S2 上效果很好?

这通常是如何处理的?

0 投票
1 回答
382 浏览

android - 指定 Android 启动自定义分辨率(在 DIP 中)

我正在为具有不同 DIP 的几种不同屏幕尺寸进行开发。虽然这不是 AVD 的问题,但我想在真实设备上对其进行测试。我有一个大屏幕,我的电路板连接到它。但是如何使用自定义分辨率启动 Android?这是在哪里指定的?

0 投票
1 回答
3463 浏览

android - 7" 平板电脑和 7" 平板电脑模拟器上的 DP 计算问题

我在计算 7 英寸平板电脑(800x480 像素)的 dp 时遇到了一些问题。以下是我的计算方式。找不到我在计算中或我的想法中出错的地方:

我正在测试三种设备:

  1. Nexus One:800x480 像素,3.7 英寸显示屏(规格
  2. 华为 Ideos:320x240 像素,2.8 英寸显示屏(规格
  3. Ainol Novo 7" 平板电脑:800x480px,7" 显示屏(规格

根据显示尺寸,我根据公式手动计算 DPI(每英寸点数):

所以我得到:

  1. Nexus One:sqrt(800*800+480*480)/3.7 = 252.15dpi
  2. 华为理念:sqrt(320*230+240*240)/2.8 = 142.86dpi
  3. Ainol Novo 7" 平板电脑:sqrt(800*800+480*480)/7 = 133.28 dp

现在我想输出屏幕指标的 dpi 值,并在此基础上输出以 dp 为单位的屏幕宽度和高度(与密度无关的像素)。我的代码是:

结果如下:

  1. Nexus One:缩放密度:1.5,密度 DPI:240,dp 宽度:533,dp 高度:320
  2. 华为 Ideos:ScaledDensity:0.75,Density DPI:120,dp 宽度:426,dp 高度:320
  3. Ainol Novo 7" 平板电脑:ScaledDensity:1.0,Density DPI:160,dp 宽度:800,dp 高度:480

我从活动中的 java 代码获得的密度 DPI 与我计算的 dpi 值不同,并且显然被 Android 舍入为值 120、160 或 240 之一,这很正常。到目前为止没有问题。

问题/问题1:

使用第三个设备,Novo 7" 平板电脑:据说 ScaledDensity 是 1.0,据说 dp 中的宽度是 800,与像素数相同。但是,事实并非如此;当我创建全屏应用程序时并在那里放置一个视图,实际上只有 533dp x 320dp 的视图适合屏幕。所以它与 Nexus One 的 dp 测量值相同;即使 Nexus One 具有更高的 DPI 值但像素数相同。如何那可能吗?

问题/问题2:

我为模拟器创建了一个 AVD,其精确测量值与 Novo 7" 平板电脑相同。我的 java 代码中的日志行显示的值与真实平板电脑设备的值相同:

  1. Ainol Novo 7" 平板电脑模拟器:ScaledDensity: 1.0, Density DPI: 160, width in dp: 800, height in dp: 480

但是,在模拟器上,我可以放置一个580dp x 320 dp 的视图,以便在全屏活动中完全可见。仿真器和具有完全相同测量值的真实设备之间的宽度 dp 怎么可能不同?

在此处输入图像描述

问题/问题 3:

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

帮助您针对不同类型的一些设计

设备,以下是一些典型屏幕宽度的数字:

...

480dp:像 Streak (480x800 mdpi) 这样的补间平板电脑。

600dp:7 英寸平板电脑 (600x1024 mdpi)。

...

我认为我的平板电脑应该属于这些类别之一,但是,它既没有 480 宽度也没有 600 dp 宽度,而是介于两者之间;就我而言,是 533dp(真实设备)或 580dp(模拟器)。

如果是这种情况,那么这样的“典型屏幕宽度”概述有什么好处,如果实际上似乎并非如此,但来自不同供应商的设备可以在标准设备之间有任何其他随机值?然后我可以继续使用像素值,因为使用 dp 的全部好处似乎不存在。

0 投票
2 回答
4174 浏览

wpf - WPF 单元和代码隐藏

最近我发现 WPF 在 XAML 中支持不同的度量单位。除了默认的 DIP,还支持像素、英寸和厘米(据我所知)。这允许设计人员编写 XAML,如下所示:

但是,您不能绑定这些值。想象一下,我们有一个具有 Dimension 属性的 ViewModel,它是一个字符串,例如“7cm”。以下不起作用:

FormatException 被抛出。同样,FrameworkElement在代码隐藏中创建时,如下所示:

编译失败,因为在构造函数/尝试创建控件的任何位置引发异常。

我想知道:

  • 是否可以在代码隐藏中使用自然单位(在我的情况下为公制 - 厘米)?
  • 如何?
  • 是否有 WPF/XAML 支持的完整单元列表?

编辑:

这是下面评论中的链接,它解决了这个问题:

http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.width.aspx

0 投票
2 回答
6398 浏览

java - 如何将像素转换为dp?

我正在尝试用 Java 创建一个简单的 android 应用程序,但我遇到了困难。

我有一个包含许多位图的数组列表,我正在将它们绘制到画布上,但我使用的是像素测量值,并且在大多数设备上都无法正确显示。

那么有什么方法可以找出我的图形在 dp 中的大小,并用 dp 将其缩放到屏幕密度/大小,并用 dp 或 dip 定位它。

我的图形(正方形):

ldpi 中的图形大小 = 50px

mdpi 中的图形大小 = 75px

hdpi 中的图形大小 = 100px

代码中的其他所有内容都很好,只是看起来很奇怪?

任何帮助,将不胜感激。

詹姆士。

0 投票
1 回答
1565 浏览

android - Android views not scaling on different sized devices

I am using eclipse I have views with images and buttons with their width and height set in dp:

But when I use a different device the images and buttons do not scale relative to the screen, so they are really big on a small screen and really small on a big screen. Am I doing something wrong in the view? Do I need to set anything in the Manifest?

Thanks.

Full code:

0 投票
2 回答
1707 浏览

android - 将倾角转换为产生相同值的像素

我需要在我的活动中将与密度无关的像素转换为像素。我尝试在我的 onCreate 中使用此方法

我尝试了另一种方法

两者都产生相同的价值。我认为问题不在于方法,而在于资源。我是否应该在清单文件中进行任何更改,例如

有一个与我类似的问题。但这并不能解决我的问题。帮帮我。

0 投票
1 回答
784 浏览

java - px和dp单位之间的转换

我想layout_marginTop使用setLayoutParams(). 但我想知道这个dp单位的价值是多少?

提前致谢。