我正在开发基于手机的 Android 应用程序。但是,最近该应用程序需要支持平板电脑。
该设计基于 1920 * 1080,我将所有图像/图标放入 xxhdpi 文件夹中,为了降低分辨率,我只让 android 帮助我重新缩放它。
问题是,它在手机上运行良好(1280 * 800 5"),但是当我使用平板电脑检查它时(比如,galaxy tab 2,其分辨率仅为 1280 * 800 10.1"和 1024 * 600)但是它看起来很模糊。如何解决?感谢您的帮助。
已添加
<supports-screens
android:resizeable="true"
android:smallScreens="true"
android:largeScreens="true"
android:xlargeScreens="true"
android:normalScreens="true"
android:anyDensity="true"/>
已经,但还是一样
更新:我还发现 dp 对于平板来说太小了
<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
<!-- API 11 theme customizations can go here. -->
<item name="android:actionBarSize">60dp</item>
</style>
我使用的是自定义 actionBarSize ,它在手机上运行良好,但 60dp 对于平板电脑来说太小了,我该如何修复它?谢谢
最佳答案
好吧,我认为您在使用图像时没有遵循这些准则。 android 文档在处理图像时没有说明屏幕分辨率,而是在引用图像资源(通常是可绘制对象)时关注像素密度,即 explained here。 .请记住,您可以有两种类型的图像(据我所知):
- 图片资源(通常是drawables)
- 图片 Assets
使用可绘制对象时,您必须关注像素密度而不是屏幕分辨率,因为您刚刚发现小(或常规)屏幕设备可以具有与大屏幕设备完全相同的分辨率,最重要的是,有时普通屏幕设备(手机)可以比大屏幕设备(平板电脑)具有更高的分辨率,显然在这种情况下手机具有更高的像素密度。因此,您需要按照他们的指南以中等像素密度 (mdpi) 设备为基准来设计您的图像资源,如下所示...以 96px 图像为例...
- 对于中等密度设备 (mdpi),请在
drawable
文件夹中提供一张 96px 的图像...这是您的基线 - 然后,通过将基线图像乘以 1.5 来定位高像素密度 (hdpi) 设备...即 96x1.5 = 144px...将此图像放入
drawable-hdpi
同名文件夹 - x-large 像素密度设备图像是基准图像乘以 2 (96x2=192px)。这进入
drawable-xhdpi
文件夹 - 对于 xx 大像素密度 (xxhdpi) 设备,将基线图像乘以 3 (96x3=288) 并将其放入
drawable-xxhdpi
文件夹
请注意,如果您不需要为像素密度较低的设备提供图像,因为 Android 可以毫无问题地将其从 mdpi 缩小...
Note: Android also supports low-density (LDPI) screens, but you normally don't need to create custom assets at this size because Android effectively down-scales your HDPI assets by 1/2 to match the expected size.
在您的情况下,发生的情况是您的 Galaxy 平板电脑具有较低的像素密度,Android 将图像从 xxhdpi 缩小到平板电脑具有的任何密度(hdpi 或 xhdpi)....因此,您的图像是对于 xhdpi 或 hdpi 设备,Android 会将 512px 图像缩小到 341px 或 256px。
如果您遵循这些指南并关注像素密度,应该没问题。但是,对于 assets
文件夹中的图像,除了使用 ScaleType
之外,您无能为力。枚举或使用 stretchable 9-patch图片
希望对你有帮助
更新
其实根据this link ,Galaxy Tab 2 具有 mdpi 屏幕,这意味着您的图像将从 xxhdpi 缩小三倍。您应该在适当的 drawable-x
文件夹中提供不同尺寸的相同图像
关于android - 为什么图标/图像在平板电脑上看起来模糊(不清晰),但在 android 手机上看起来很好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25234621/