问题标签 [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 投票
0 回答
755 浏览

java - javafx如何实现密度无关设计

 大家好,

                我们正在尝试在 javaFX 中实现密度无关设计。(例如,如果 200 像素的窗口宽度假设在 88 dpi 中占用 20 厘米。如果相同的 200 像素窗口大小的应用程序在不同的 PPI 中运行,则它应该只占用 20 厘米)。但根据 javaFX,场景宽度只有 px 单位。那么javaFX会针对不同的屏幕分辨率自动管理不同PPI中的px吗?

我们通过创建简单的 hello word 应用程序来检查这一点,并将舞台大小设置为 300x275 并以不同的分辨率运行(从操作系统设置中手动更改分辨率)分析场景大小的显示方式不同。那么如何实现密度无关设计。
             像 Android 中可用的 dp 单元

我们尝试将 px 应用于 javaFX 中的 dp 公式。但是很难在 javaFX 中找到 PPI 意味着在 ubuntu getDpi() 方法中,所有分辨率都返回 96。

    在这里,我们附上不同屏幕分辨率的屏幕截图。

800x600 分辨率

1024x768 分辨率

1366x768 分辨率

0 投票
4 回答
12224 浏览

xamarin - 如何在 xamarin.android 中将 dp 转换为 px?

我想在xamarin.android的C# 代码中将 dp 转换为 px ,但我能找到的只是android studio 中的java 代码,这些代码在xamarin 中有一些问题。我尝试使用等价物,例如使用 Resources 而不是 getResources(),我可以解决一些小问题,但是有一些问题我找不到任何等价物。以下是 xamarin 中的原始代码、我的代码和我的代码问题:

第一个代码

(从Programatically set height on LayoutParams as density-independent pixels 中找到)

爪哇代码

C# 代码

问题:

  • “TypedValue”不包含“COMPLEX_UNIT_DIP”的定义

  • 无效的表达式术语 <(> 的相同错误)

  • 当前上下文中不存在名称“HEIGHT”

第二个代码

(从公式 px 到 dp,dp 到 px android 中找到)

爪哇代码

C# 代码

问题

  • 运算符“/”不能应用于“float”和“DisplayMetricsDensity”类型的操作数

现在我实际上有两个问题。哪个代码更合适?xamarin.android 中它们的等效代码是什么?

提前致谢。

0 投票
0 回答
194 浏览

java - 写入 JPEG 文件后像素数据发生变化

我正在对 JPEG 图像执行隐写术。我正在使用DCT系数来隐藏数据。我执行以下步骤:

  1. 将输入图像读入BufferedImage
  2. BufferedImage
  3. 应用正向 DCT 以获得 DCT 系数
  4. 在 DCT 系数中嵌入消息位
  5. 应用逆 DCT 并将块写回BufferedImage

重复步骤 2-5 直到没有剩余消息位,此时我写入BufferedImage名为output.jpg. 值得一提的是,我并不适用DCT于整个图像,而仅适用于我嵌入消息位的块。我将这个源用于 DCT,这个源用于隐写术

问题:我最终ouput.jpg得到表示像素数据发生巨大变化的随机线条。以下是图像写入代码:

样本输入和输出:

量化后和嵌入数据前的 DCT 系数矩阵:

嵌入数据后的量化 DCT 系数:

嵌入数据并应用 IDCT 后,Y 空间中的像素块:


输入.jpg]

输出.jpg]

我认为这是由于 JPEG 的有损性质,所以我尝试了 PNG,但仍然遇到同样的问题。

0 投票
1 回答
86 浏览

android - 所有屏幕上的视图大小相同

我需要以毫米为单位显示精确尺寸的视图。我面临的问题是,在许多 android 设备上,当我应用视图大小 im mm 时,输出会有所不同。有没有办法在所有屏幕上实现完全相同的视图大小?我试过:

  • 像素 = (mm * dpi) / 25.4
  • context.getResources().getDimensionPixelOffset(R.dimen.size) (100mm)
  • TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_MM, 100, displayMetrics);

没事了

0 投票
1 回答
1686 浏览

android - Android 布局不适合屏幕

我有一个适合所有手机的布局,但是当分辨率是480x800布局的底部时,布局就离开了屏幕。我正在使用dp尺寸。不管像素数如何,它不应该与密度无关。我应该怎么做才能解决这个问题?

0 投票
1 回答
2941 浏览

xml - 找不到dimens.xml 文件。如何创建一个?

我想要一个dimens.xml 文件,在其中保留我在Android Studio main_activity.xml 文件中使用的尺寸,但在app-> res-> values 中找不到它。

我们应该自己创建那个文件吗?如果是,该怎么做?我试图搜索类似的问题,但没有找到任何问题。请帮忙!

0 投票
2 回答
606 浏览

android - Android TextView 十进制大小问题

我测试了模拟器和真实设备,但正如你所见,40 dp 和 40.2 dp 之间没有变化!我正在开发一个字体敏感度非常高的项目,问题是 android 文本引擎的行为。

有什么办法可以防止这种情况发生吗?

请帮忙!

这是代码:

结果:

0 投票
2 回答
2853 浏览

android - 如何在 android 中构建支持所有屏幕尺寸和设备的 UI

我目前正在尝试开发一个 android 应用程序,但我已经被困了一段时间,现在试图在活动中缩放视图。

在图片中,您可以看到两种设备的分辨率宽度都是 10 像素只是为了让你们更容易理解)。屏幕尺寸从5 英寸10 英寸不等。蓝色矩形只是一个 EditText,我想在不同的设备上进行缩放。

如您所见,EditText两个设备中的像素大小相同,但像素数量不同。我希望两个设备看起来完全一样,我已经尝试了一切来解决这个问题,但似乎没有什么对我有用。

(这只是我为显示问题而绘制的示例图像,但第二张图像是我尝试制作的以及它真正出错的地方)

在此处输入图像描述

这就是我想要解决的问题:

在此处输入图像描述

0 投票
1 回答
127 浏览

android - xml中的dp与java dp-px转换不匹配

由于循环重复,我需要在 java 中而不是在 xml 中设置文本、边距或图像的大小。

当我为 xml 文件中的文本设置 20dp 时,结果比使用此(基于材料设计指南)转换方法转换为 px 的相同 20dp 小 3 倍:

dp = (像素宽度 * 160) / 密度

如何在 xml 和 java 中获得相同的 dp?

资源:

xml:

爪哇:

上面的xml,下面的java结果

提前致谢!

0 投票
1 回答
1055 浏览

c# - 高 DPI 主屏幕的 Horizo​​ntalOffset 方向错误

我目前正在处理我们的 WPF 应用程序中的一些高 DPI 问题(.NET 4.6.1 - 系统 DPI 感知处于活动状态)。

通常,该应用程序会按照我们的预期进行 - 根据当前显示的 DPI 设置进行缩放,当将其从屏幕 A @ 100% 移动到屏幕 B @ 150% 时,它会正确地“在半点”更改其整体比例。

大多数未解决的问题是因为我们有一些基于像素/DIP 的计算没有考虑 DPI 设置。我通过计算正确的 DPI 值来解决这个问题:

在那里我发现了第一件奇怪的事情(至少对我来说):

  1. 如果主显示器设置为例如 125%,我得到dpiX所有屏幕的 1.25,即使是 100% 的辅助屏幕,但所有像素值已经乘以 1.25(意味着 1600x1200 像素屏幕的工作尺寸为 2000x1500) .
  2. 如果主屏幕处于 100% 并且辅助屏幕处于例如 150% 则正好相反:我总是得到 1 dpiX,但所有值都已经正确并且不需要更正(=> 或乘法/潜水1 不会破坏它)。

但现在我的实际问题是:
我将一些弹出窗口放置在其放置目标的中心,并具有以下绑定:

和转换器:

对于案例 2,如果没有注释掉的代码,一切都已经正常工作,但对于案例 1,我尝试将 DPI 值相乘,但最终正确的做法是将其乘以使其-1正常工作。

为什么会这样?
我怎样才能有效地检测到什么时候需要呢?dpiX > 1?

我也对缩放问题或整个中心放置的其他解决方案持开放态度。

PS:我正在运行安装了 .NET 4.7 的 Windows 10 1703(由于某些其他原因,应用程序仍以 4.6.1 为目标)。

更新:
我创建了一个演示解决方案:https
://github.com/chrfin/Horizo​​ntalOffsetError 如果主屏幕处于 100% 是正确的: 但如果主屏幕是 125% 则关闭: 但如果我添加*-1 到偏移量再次正确:
正确的

错误的

已更正

...但为什么?