针对一台设备进行了优化后,图片视图以布局中定义的正确比例显示。但是,如何更进一步,使各种图像视图在不同的设备上扩展?
android:layout_width="fill_parent"
android:layout_height="fill_parent"
尝试在半相关问题中提出一些建议:
android:adjustViewBounds="true"
那没有改变任何事情。
其他详情:
android:layout_width="100dp"
android:layout_height="100dp"
已定义图像视图的宽度和高度。这是什么阻止设备根据可用的屏幕空间缩放各种图像视图?
答案 0 :(得分:1)
欢迎来到这件痛苦的事! :)
<强>基本上强>
如果你可以控制你的图像大小(你使用的资源的情况,如drawables,资产或预定义大小的图像)你只需要做一些微积分来保证你的ImageView
具有适合的大小你的图像在不同的屏幕上。
该框架已在Runtime
为这类内容提供API,但您甚至不需要在代码中执行此操作。通常在与UI设计人员合作时,他们会(应该)向您提供复杂视图的所有屏幕密度和UI元素的度量规格,或者至少是基本密度(MDPI)之后的规格,因此您可以自己计算其余部分。无论哪种方式,您都可以使用values/dimens
来获取这些值,并相应地使用它。正如您已经看到的那样,使用scaleType=fitXY
和adjustViewBounds=true
,您很高兴。很多参考文献:
当您无法控制图像尺寸时
当您无法控制需要显示的图像大小时(例如,当它上传到没有大小规则的某个地方时),您可以采用多种方法来尝试将宽高比保持在{{1 }}。你可以寻找这个并使用似乎最能为你服务的东西。最近,我一直在使用Picasso作为我的图像加载器并找到了一种方法,而不是为了调整图像大小(尽管Picasso在需要时调整图像大小),但是以一种非常简单和优雅的方法绕过这种情况:
Runtime
这会产生这种行为,就像WhatsApp:
无论 Picasso.with(context).load("image_url").fit().centerCrop().into(imageView);
的大小如何,图像都不会失真并显示主要部分(中心)。当然,您仍应根据当前的屏幕尺寸和密度使用正确的视图大小,以确保获得最佳体验。
答案 1 :(得分:1)
您必须查看ScaleType http://developer.android.com/reference/android/widget/ImageView.ScaleType.html
实施例
android:scaleType="center"
或
android:scaleType="fitCenter"
或fitXY
,fitStart
等。您可以看到适合您的内容。