我们正在开发一个Android应用程序,我们遇到了一个问题,即同一密度桶中的设备,即“xxhdpi”看起来并不一样,即Pixel和Pixel 2.我们有一个非常重要的UI图像并使用约束视图来组织多个重叠图像的放置。其中一些屏幕顶部的导航抽屉进一步加剧了问题,因为相同屏幕尺寸上的边距较厚,密度不同,应用程序的其余部分被挤压成较小的框架。
下面举例说明Pixel和Pixel 2的呈现方式有多么不同: Pixel 2 vs. Pixel
我们尝试制作更具体的布局以匹配更具体的DPI范围,但无论我们尝试什么,模拟器都将相同的设备组合在一起。 These are the layout categories we've tried, where sw320dp for example refers to a minimum screen width
有没有办法通过约束视图功能(如约束锚点或百分比约束)来解决此问题?或者,我们可以更简单地定义我们的布局类别,或者对类似设备的dp规模做一些不一样的事情吗?我们已经查阅了此页面以及大量堆栈溢出帖子:Android's Guide on Supporting Multiple Screen Sizes。
欢迎任何建议,评论或具体问题,提前感谢任何花时间阅读此内容的人。
答案 0 :(得分:0)
这是我的方法,让图像完全显示而不会在边缘裁剪,希望你从中得到某种想法来解决你的情况。
问题在于wrap_content和match_parent,尽管像素和像素2属于“xxhdpi”相同的类别,用于从密度桶中获取图像,但它们的宽度变化很小,像素:143.8 x 69.5 x 8.5 mm (5.66 x 2.74 x 0.33英寸)和pixel2:145.7 x 69.7 x 7.8 mm(5.7 x 2.7 x 0.31英寸)
所以我猜你可能有宽度和图像比例类型的匹配父作为中心裁剪,因此图像缩放相应地放大,所以因为它们具有不同的宽度,所以它们相对于另一个放大了。
我有类似的情况所以我所做的是使用webview与匹配父作为宽度和包装内容作为高度然后我在webview中显示图像
WebSettings settings = webView.getSettings();
settings.setLoadWithOverviewMode(true);
这里setLoadWithOverviewMode实际上缩小并适合图像,所以无论你总是看到整个图像。