-1

我们正在开发一个 android 应用程序,我们遇到了一个问题,即相同密度桶中的设备,即“xxhdpi”看起来并不相同,即 Pixel 和 Pixel 2。我们有一个非常重图像的 UI,并且正在使用一个约束视图来组织几个重叠图像的放置。其中一些屏幕顶部的导航抽屉进一步加剧了这个问题,因为在相同屏幕尺寸上不同密度的边距更厚,而应用程序的其余部分被挤压到一个较小的框架中。

下面是 Pixel 和 Pixel 2 渲染差异的示例: Pixel 2 vs. Pixel

我们尝试制作更具体的布局以匹配更具体的 DPI 范围,但无论我们尝试什么,模拟器都会将相同的设备组合在一起。这些是我们尝试过的布局类别,例如 sw320dp 指的是最小屏幕宽度

有没有办法通过约束视图功能(例如约束锚或百分比约束)来解决这个问题?或者,我们可以更严格地定义我们的布局类别,或者对类似设备的 dp 比例不同做一些事情吗?我们已经查阅过此页面以及大量堆栈溢出帖子:Android 支持多种屏幕尺寸指南

欢迎任何建议、评论或具体问题,提前感谢任何花时间阅读本文的人。

4

1 回答 1

0

这是我让图像完全显示而不裁剪边缘的方法,希望你能从中得到一些想法来解决你的情况。

这里的问题在于 wrap_content 和 match_parent,虽然像素和像素 2 属于同一类别,即用于从密度桶获取图像的“xxhdpi”,但它们的宽度几乎没有变化,像素:143.8 x 69.5 x 8.5 mm (5.66 x 2.74 x 0.33 英寸)和像素 2:145.7 x 69.7 x 7.8 毫米(5.7 x 2.7 x 0.31 英寸)

所以我猜你可能已经将宽度和图像比例类型匹配为中心裁剪,因此图像会相应地放大,所以因为它们具有不同的宽度,所以它们在一个上比另一个放大得更多。

我有类似的情况,所以我所做的是使用 webview 与匹配父作为宽度并将内容包装为高度,然后我在 webview 中显示图像

        WebSettings settings = webView.getSettings();
        settings.setLoadWithOverviewMode(true);

这里 setLoadWithOverviewMode 实际上会缩小并适合图像,因此无论您总是看到整个图像是什么。

于 2018-02-20T22:08:02.263 回答