Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何制作一个Android用户界面,将设计师的图像作为图层交付_Android_Android Layout_Android Widget_Scale_Android Xml - Fatal编程技术网

如何制作一个Android用户界面,将设计师的图像作为图层交付

如何制作一个Android用户界面,将设计师的图像作为图层交付,android,android-layout,android-widget,scale,android-xml,Android,Android Layout,Android Widget,Scale,Android Xml,我雇了一位设计师帮我重新设计Android应用程序的UI。对于每一个活动他都给了我一个背景图像,其中包括任何静态内容,比如文本内容的花式框架;加上按钮的图像,这些图像必须与背景图像的精确位置相匹配,才能与背景图像中的帧相匹配 但是,由于Android设备具有不同的屏幕大小和纵横比,因此很容易使用Android:scaleType=“centerInside”自动调整背景图像,但是如何才能使所有其他图像精确调整到像素级,以适应背景?如果它们不必适应背景,我只需为每个ImageButton设置准确的

我雇了一位设计师帮我重新设计Android应用程序的UI。对于每一个
活动
他都给了我一个背景图像,其中包括任何静态内容,比如文本内容的花式框架;加上按钮的图像,这些图像必须与背景图像的精确位置相匹配,才能与背景图像中的帧相匹配

但是,由于Android设备具有不同的屏幕大小和纵横比,因此很容易使用Android:scaleType=“centerInside”自动调整背景图像,但是如何才能使所有其他图像精确调整到像素级,以适应背景?如果它们不必适应背景,我只需为每个
ImageButton
设置准确的宽度和高度,但取决于背景的缩放方式(基于屏幕大小和比例),它们可能最终无法正确对齐

事先非常感谢

更新: 是否有某种方法可以使整个视图(例如相对视图)在屏幕内缩放,就像使用
scaleType=“centerInside”
在ImageView内缩放图像一样?如果是这样,我将能够将
RelativeLayout
的大小设置为与背景图像相同的大小,并将所有其他按钮/图像放置在它们相对于背景图像的位置,然后就可以得到整个内容(包含所有其他视图的
RelativeLayout
)在手机屏幕内居中。

你的方法是错误的(或者至少是错误的),因为android设备提供的屏幕不仅大小不同,而且密度也不同。你现在要读的是第一本。然后了解不可缩放的位图UI将不会像您想象的那样工作。您需要支持屏幕大小,这意味着您的UI元素(如按钮、列表、标题等)应缩放。有很多方法可以解决这个问题,一种是使用位图(随机选择)

另外,请阅读本文:


在设计UI时,假设您设计的是
mdpi
density。布局完成后,您将为创建可绘制文件,即
mdpi
hdpi
(并分别以相同的名称放入
res/drawable mdpi
res/drawable hdpi
)。布局文件保持不变,但框架会自动选择正确的资源,所以只要您为密度提供了可绘制文件,您的UI就会显得清晰。请参阅文章。

但我是否仍然存在将所有层装配在一起的问题?我理解这一点,但我仍然不理解如何使用Android布局将一个图像“放置”在另一个图像上的确切位置。我可以根据屏幕大小和密度将背景图像设置为缩放比例,但我不知道如何在与背景图像相对的精确位置上创建不同的图像。我遗漏了什么吗?您可以始终使用
,将元素放入其中,并根据您的意愿定位,彼此重叠。是的,但我不知道背景图像的确切位置,因为它使用的是
android:scaleType=“centerInside”
。这就是我的问题。