我的问题就在标题中。 我尝试将图像放到我的布局中,我尝试使用带有wrap_content宽度和高度的FrameLayout背景,并尝试使用带有所有可能的fitScale属性的imageView。
我只是不明白为什么我的720像素宽度图像在手机屏幕的宽度上是HALF,这是一个宽度为720像素的三星Galaxy s3 ....
我真正的问题:
确保我的照片在应用中不会出现任何失真的最佳方法是什么?
答案 0 :(得分:3)
首先,您需要考虑屏幕密度和倾角值,而不是像素。这意味着您正在处理“虚拟屏幕”,其中1 dip(密度无关像素)表示不同数量的实际屏幕像素,具体取决于设备。
对于drawable,您可以使用以下类别在任何屏幕上获得清晰的结果:
根据这些比例因子创建不同大小的位图版本,以便在任何屏幕上获得清晰的结果。您应该从xhdpi开始作为最高分辨率,以避免因升级而导致质量下降。
将这些不同版本放入各自的可绘制文件夹(res / drawable-ldpi,res / drawable-mdpi ...)。
表示,同一个位图的这些不同版本当然必须具有相同的文件名,否则无效。其次,您不应对设备屏幕高度和宽度做出强有力的假设。您需要布置视图和图形,以便动态地使用整个屏幕而不知道确切的屏幕分辨率。但是,您可以根据configuration qualifiers
对这些屏幕分辨率做出弱假设根据任何假设尝试避免视图的固定大小。始终避免布局XML文件中的“px”值。请改用“dip”。
阅读文档Supporting Multiple Screens以获取更多信息。
您想要实现的效果就像您希望图像占据整个屏幕宽度一样。
如果您将图像设置为任何视图的背景(例如FrameLayout),则图像的显示剪辑取决于该视图的大小。
如果该视图将layout_width / layout_height设置为wrap_content,则其大小取决于其子视图的维度和排列。 在FrameLayout的情况下,它取决于FrameLayout的单个子节点的大小。
如果您正在使用ImageView,则默认情况下将缩放图像以适合ImageView的大小。 ImageView的大小取决于其layout_width / layout_height值。如果将这些值设置为match_parent,并且如果ImageView有足够的空间“增长”,您应该能够看到整个屏幕上的图像。
“成长空间”取决于布局中ImageView的上下文。是否有邻居占用空间?父视图是否太小(例如,因为wrap_content)?寻找这些可能的问题。