Android 为什么我的720像素图像在我的720像素星系S3中失真

Android 为什么我的720像素图像在我的720像素星系S3中失真,android,android-image,Android,Android Image,我的问题就在标题里。 我尝试将图像放入布局中,我尝试了使用FrameLayout的背景和wrap_内容宽度和高度,还尝试了使用imageView和所有可能的fitScale属性 我就是不明白为什么我的720像素宽的图像是我手机屏幕宽度的一半,这是一个720像素宽的三星galaxy s3 我真正的问题是: 什么是确保我的应用图片不会出现任何失真的最佳方法?首先,你需要考虑屏幕密度和倾斜值,而不是像素。这意味着您正在处理一个“虚拟屏幕”,其中1个dip(与密度无关的像素)表示不同数量的真实屏幕像素,

我的问题就在标题里。 我尝试将图像放入布局中,我尝试了使用FrameLayout的背景和wrap_内容宽度和高度,还尝试了使用imageView和所有可能的fitScale属性

我就是不明白为什么我的720像素宽的图像是我手机屏幕宽度的一半,这是一个720像素宽的三星galaxy s3

我真正的问题是:


什么是确保我的应用图片不会出现任何失真的最佳方法?

首先,你需要考虑屏幕密度和倾斜值,而不是像素。这意味着您正在处理一个“虚拟屏幕”,其中1个dip(与密度无关的像素)表示不同数量的真实屏幕像素,具体取决于设备

对于drawables,您可以使用以下类别在任何屏幕上获得清晰的结果:

  • ldpi(比例系数0.75)
  • mdpi(默认/基线:比例因子1.0)
  • hdpi(1.5)
  • xhdpi(2.0)
根据这些比例因子创建不同大小的位图版本,以在任何屏幕上获得清晰的结果。您应该从最高分辨率的xhdpi开始,以避免因放大而导致的质量损失

将这些不同版本放入各自的可绘制文件夹(res/drawable ldpi、res/drawable mdpi…)。当然,同一位图的不同版本必须具有相同的文件名,否则将无法工作

其次,你不应该对设备屏幕的高度和宽度做出强烈的假设。您需要布局视图和图形,以便它们动态地利用整个屏幕,而不知道确切的屏幕分辨率。但是,您可以根据屏幕分辨率对这些屏幕分辨率进行较弱的假设

  • 小的
  • 正常的
  • 大的
  • xlarge
尽量避免基于任何假设的视图的固定大小。在布局XML文件中始终避免使用“px”值。用“蘸”代替

有关更多信息,请阅读文档

你想要达到的效果听起来好像你想要你的图像占据整个屏幕的宽度

如果将图像设置为任何视图(例如FrameLayout)的背景,则显示的图像剪辑取决于该视图的大小

如果该视图的layout_width/layout_height设置为wrap_内容,则其大小取决于其子视图的尺寸和排列。 对于FrameLayout,它取决于FrameLayout的单个子级的大小

如果您使用的是ImageView,默认情况下,图像将被缩放以适合ImageView的大小。ImageView的大小取决于其布局\宽度/布局\高度值。如果您将这些值设置为与父对象匹配,并且如果ImageView有足够的空间“增长”,您应该能够看到图像在整个屏幕上伸展


“增长空间”取决于布局中ImageView的上下文。有邻居占地方吗?父视图是否太小(例如因为换行内容)?寻找这些可能的问题。

首先,你需要考虑屏幕密度和倾斜值,而不是像素。这意味着您正在处理一个“虚拟屏幕”,其中1个dip(与密度无关的像素)表示不同数量的真实屏幕像素,具体取决于设备

对于drawables,您可以使用以下类别在任何屏幕上获得清晰的结果:

  • ldpi(比例系数0.75)
  • mdpi(默认/基线:比例因子1.0)
  • hdpi(1.5)
  • xhdpi(2.0)
根据这些比例因子创建不同大小的位图版本,以在任何屏幕上获得清晰的结果。您应该从最高分辨率的xhdpi开始,以避免因放大而导致的质量损失

将这些不同版本放入各自的可绘制文件夹(res/drawable ldpi、res/drawable mdpi…)。当然,同一位图的不同版本必须具有相同的文件名,否则将无法工作

其次,你不应该对设备屏幕的高度和宽度做出强烈的假设。您需要布局视图和图形,以便它们动态地利用整个屏幕,而不知道确切的屏幕分辨率。但是,您可以根据屏幕分辨率对这些屏幕分辨率进行较弱的假设

  • 小的
  • 正常的
  • 大的
  • xlarge
尽量避免基于任何假设的视图的固定大小。在布局XML文件中始终避免使用“px”值。用“蘸”代替

有关更多信息,请阅读文档

你想要达到的效果听起来好像你想要你的图像占据整个屏幕的宽度

如果将图像设置为任何视图(例如FrameLayout)的背景,则显示的图像剪辑取决于该视图的大小

如果该视图的layout_width/layout_height设置为wrap_内容,则其大小取决于其子视图的尺寸和排列。 对于FrameLayout,它取决于FrameLayout的单个子级的大小

如果您使用的是ImageView,默认情况下,图像将被缩放以适合ImageView的大小。ImageView的大小取决于其布局\宽度/布局\高度值。如果您将这些值设置为与父对象匹配,并且如果ImageView有足够的空间“增长”,您应该能够看到图像在整个屏幕上伸展


“增长空间”取决于布局中ImageView的上下文。有邻居占地方吗?父视图是否太小(例如因为换行内容)?查找这些可能的问题。

Galaxy S3的宽度为360dp,请使用fill\u父对象作为图像视图的宽度,scaleType=fitXY。将720px宽的图像放在drawable xhdpi文件夹中,您可以将缩小的副本放在drawable和drawable hdpi文件夹中。Galaxy S3的宽度为360dp,请使用填充父级