问题标签 [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.
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?我知道这是理想的,但为什么呢?
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 量
我很困惑..
android - 让我在画布上的位图始终为“全屏”
所以我在画位图的地方有这个画布
一个例子是位图作为背景..所以我将在我的 533x320 dip Samsung S2 上制作这个全屏
所以,当我在一个 480x320 dip 的 HTC 上加载同一个应用程序时,我的背景图像现在会比屏幕大 - 这通常是如何处理的?
我知道有些人可能会回答说我可以只检查 DIP 大小并使用它.. 这也适用于这个背景图像.. 但是我拥有的 10 个国际象棋棋子没有一个不在屏幕之外,因为它扩展了 HTC 的 480dp 但在我的 533dp S2 上效果很好?
这通常是如何处理的?
android - 指定 Android 启动自定义分辨率(在 DIP 中)
我正在为具有不同 DIP 的几种不同屏幕尺寸进行开发。虽然这不是 AVD 的问题,但我想在真实设备上对其进行测试。我有一个大屏幕,我的电路板连接到它。但是如何使用自定义分辨率启动 Android?这是在哪里指定的?
android - 7" 平板电脑和 7" 平板电脑模拟器上的 DP 计算问题
我在计算 7 英寸平板电脑(800x480 像素)的 dp 时遇到了一些问题。以下是我的计算方式。找不到我在计算中或我的想法中出错的地方:
我正在测试三种设备:
- Nexus One:800x480 像素,3.7 英寸显示屏(规格)
- 华为 Ideos:320x240 像素,2.8 英寸显示屏(规格)
- Ainol Novo 7" 平板电脑:800x480px,7" 显示屏(规格)
根据显示尺寸,我根据公式手动计算 DPI(每英寸点数):
所以我得到:
- Nexus One:sqrt(800*800+480*480)/3.7 = 252.15dpi
- 华为理念:sqrt(320*230+240*240)/2.8 = 142.86dpi
- Ainol Novo 7" 平板电脑:sqrt(800*800+480*480)/7 = 133.28 dp
现在我想输出屏幕指标的 dpi 值,并在此基础上输出以 dp 为单位的屏幕宽度和高度(与密度无关的像素)。我的代码是:
结果如下:
- Nexus One:缩放密度:1.5,密度 DPI:240,dp 宽度:533,dp 高度:320
- 华为 Ideos:ScaledDensity:0.75,Density DPI:120,dp 宽度:426,dp 高度:320
- 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 代码中的日志行显示的值与真实平板电脑设备的值相同:
- 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 的全部好处似乎不存在。
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
java - 如何将像素转换为dp?
我正在尝试用 Java 创建一个简单的 android 应用程序,但我遇到了困难。
我有一个包含许多位图的数组列表,我正在将它们绘制到画布上,但我使用的是像素测量值,并且在大多数设备上都无法正确显示。
那么有什么方法可以找出我的图形在 dp 中的大小,并用 dp 将其缩放到屏幕密度/大小,并用 dp 或 dip 定位它。
我的图形(正方形):
ldpi 中的图形大小 = 50px
mdpi 中的图形大小 = 75px
hdpi 中的图形大小 = 100px
代码中的其他所有内容都很好,只是看起来很奇怪?
任何帮助,将不胜感激。
詹姆士。
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:
android - 将倾角转换为产生相同值的像素
我需要在我的活动中将与密度无关的像素转换为像素。我尝试在我的 onCreate 中使用此方法
我尝试了另一种方法
两者都产生相同的价值。我认为问题不在于方法,而在于资源。我是否应该在清单文件中进行任何更改,例如
有一个与我类似的问题。但这并不能解决我的问题。帮帮我。
java - px和dp单位之间的转换
我想layout_marginTop
使用setLayoutParams()
. 但我想知道这个dp
单位的价值是多少?
提前致谢。