如何为从iOS移植的Android创建密度无关的全屏图像

时间:2014-04-14 17:21:02

标签: android image android-layout android-studio

我有一个全屏图像,表示我想在Android应用中重复使用的iOS应用的主屏幕。我已经阅读了关于密度无关像素的Android文档。我已经读过系统执行缩放和调整大小以使您的应用程序在不同的屏幕上工作,但是需要为每个密度桶创建图像以最大化体验。

根据我的理解,以下“常见”屏幕尺寸通常具有相关的密度桶,屏幕尺寸属于(但并非总是如此):

480x800像素 - > hdpi(240 dpi) 720x1280像素 - > xhdpi(320 dpi) 1080x1920像素 - > xxhdpi(480 dpi)

因此,为了测试我的理解,我调整了我的全屏图像以适应这些屏幕尺寸和密度。对于每一个,我在photoshop中创建一个新图像以适应特定的屏幕尺寸。然后我调整了图像大小并将文档大小更改为384点(约束)的宽度。我还尝试了宽度为320和360.我将其保存为png文件并将每个屏幕大小的每个图像加载到可绘制目录“drawable-hdpi”,“drawable-xhdpi”和drawable-xxhdpi“。这些值​​被选中基于文件Metrics and Grids | Android Developers

接下来,我使用“Android Studio”来创建布局。我还添加了一个按钮,放在图像的一部分上,我的应用程序需要一个按钮。

问题是模拟器和Android Studio布局编辑器在每个设备配置的图像两侧都显示白色阴影框。 Android不会缩放或调整大小。实际上,我真的不希望它调整大小,如果它会笨拙地伸展它,但我不明白为什么布局编辑器和模拟器在图像的一侧放置白条。

此外,按钮不会停留在图像上的相同位置。

请帮我理解以下布局有什么问题。如何为大多数设备填充屏幕的全屏图像创建布局,如何定义固定到图像上相同点的按钮(例如,相对于图像的左下角)?

以下是Android Studio创建的布局中的XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="0dp"
    android:paddingRight="0dp"
    android:paddingTop="0dp"
    android:paddingBottom="0dp"
    tools:context="com.myCompany.myApp.MainActivity">

<ImageView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/imageView"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:layout_alignWithParentIfMissing="true"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:src="@drawable/android_home_screen1" />

<Button
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Channel 1"
    android:id="@+id/button"
    android:layout_marginBottom="128dp"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:textColor="#FFFFFF"
    android:layout_marginLeft="32dp" />

</RelativeLayout>

0 个答案:

没有答案