在安卓系统中,像屏幕宽度一样大的图像,倾斜似乎没有用处



我很难弄清楚安卓指南如何(以及是否)对我想要的东西有帮助。

我的目标是设计一个布局,在充满文本行的texview上显示图像。两者都必须与其父容器的宽度相匹配。问题是imageview的宽度取决于屏幕的宽度,而我无法提前知道
在Android文档中,dip的概念是核心,但毕竟,它只是一种使真实图像大小在任何情况下都相同的方法,与屏幕大小无关。

我该如何继续
1) 将大到可以调整大小(即缩小)的图像放入res文件夹中。希望这不会创建工件或不需要一些资源
2) 1的一些变体。图像位于不同的文件夹中
3) 为每个屏幕大小和旋转创建一个图像(如果可能将其保存在某个地方),这是第一次有必要
4) 其他解决方案

你的帮助不仅有助于优化这个布局,也有助于让我理解基于dip设计布局背后的原理,在许多情况下我无法理解。

你说得对,"每个屏幕都不一样。"将图像放在每个res文件夹中只会处理屏幕密度的一般情况,而不会处理实际屏幕大小。

拥有一个包含所有可能图像大小的文件夹可能会变得非常大(不是针对所有图像,而是针对高质量的复杂图像)。

您应该有一个图像,可以满足所有屏幕尺寸所需的图像质量(例如,甚至可以放大xxxdpi,但令人满意)。然后使用屏幕大小计算和BitmapFactory缩放进行调整。您还需要正确管理内存,尤其是在较旧、较小的设备上。

编辑:

Android有各种各样的资源来帮助您管理IP、图像资产、图形等。如果您有一个庞大的团队,有数百个图像资产,并且有数千台设备的常见用例(按钮、微调器、图标等),那么使用资源文件夹有助于为您的团队组织工作。如果你制作游戏并不断创建、显示和调整图像资产的大小,那么资源文件夹解决方案可能不理想,或者可能导致APK膨胀。此外,对于不同密度的屏幕,您可能希望使用不同的资源/图形文件,但不需要编写大量代码来管理,因此Android提供了内置工具来提供帮助。

请注意,Android处理了一长串Drawable类型(http://developer.android.com/guide/topics/resources/drawable-resource.html)适用于各种各样的应用程序图形需求-动画、mipmap、9-patch。。。

在您的情况下,您询问的是您希望以特定方式显示的单个图像。欢迎您使用资源文件夹(因为它们是可用的)来实现这一目标,但由于您听起来像一个需要以特定方式显示单个图像的小团队,因此您最好只提供一个图像,询问屏幕大小并显示它。手机也会定期重新计算和重新显示Android提供的资源文件中的相同图像。将它们用于单个图像并不能真正"节省"时间、CPU周期或其他任何东西。

使用以下代码动态查找屏幕的宽度和高度,并根据需要将其设置为ImageView。

Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();  
int height = display.getHeight();
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(width,height);
imageview.setLayoutParams(params);

最新更新