如何正确创建资产?
How to properly create assets?
我在为 Android 创建设计时遇到了困难。
根据我发现的一些信息,MDPI 屏幕的比例因子为 1,因此我创建了一个 48dp = 48px 的图像并将其保存在 mdpi 文件夹中,然后使用正确的比例因子,我将它保存在各个地方。
现在,我想要一个与我的图像高度相同的按钮,当然,在我的布局中我可以声明一个 48dp 高度的按钮,但是,当在其他屏幕上使用时(比如 XXHDPI)图像和按钮的高度不再相同。
编辑:添加了按钮的布局
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="50dp">
<Button
android:id="@+id/btnCamera"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="@drawable/logon_camera_button"
android:text="@string/logon_scanQrCode"
android:textColor="#ffffff"
android:textSize="20sp"
android:layout_marginLeft="48dp"
android:layout_marginRight="25dp"
android:gravity="center" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/btnCamera"
android:layout_alignLeft="@+id/btnCamera"
android:id="@+id/imgCamera"
android:src="@drawable/camera" />
</RelativeLayout>
有人对这个话题有什么建议吗?
亲切的问候
如果您的按钮背景是 ShapeDrawable 支持的形状,那么您可以通过在 drawable 文件夹中创建 xml 并将其设置为您的按钮背景来创建一个。请参阅下面的 ShapeDrawable 示例
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#f0600000"/>
<stroke android:width="3dp" android:color="#ffff8080"/>
<corners android:radius="3dp" />
<padding android:left="10dp" android:top="10dp"
android:right="10dp" android:bottom="10dp" />
</shape>
如果它是任何其他形状或带有文本,您可以创建它的 NinePatch 图像,这样文本不会根据屏幕分辨率仅拉伸没有文本拉伸的部分。建议使用 android:text 属性 添加文本,并使用 android:textSize 在 sp 中指定文本大小。所以你可以添加一个没有文本的图像并设置补丁,因为只有线条部分被拉伸而不是图像中的曲线(如果有的话)。
你可以添加一个res/values-xlarge/styles.xml
<style name="height">
<item name="android:height">50dp</item>
</style>
具有不同的设备屏幕值 - xxlarge、值 - 小等,值
并将此样式添加到您的按钮
style="@style/height"
首先删除要在视图中设置的图像。然后下载 this 软件。并在该软件 xxhdpi 上设置输入密度。并勾选所有选项。然后 9patch 调整图像大小。并将它们放在 drawable 中并设置为查看。就是这样。
总是从您要支持的最高分辨率开始。 xxhdpi
的缩放系数为 3,因此您的 xxhdpi
图像版本应为 144px
.
现在有很多 xxxhdpi
设备,所以您可能应该选择 48 * 4 = 192px。只需将最高分辨率的图像放入 -xxxhdpi
文件夹(将 mdpi
和其他内容留空),然后让自动缩放来完成它。当您在 dp
.
中分配大小时,请记住 x4
乘数
例如如果你想保持按钮高度和图像高度的 1:1 比率,并且你的图像在 xxxhdpi
桶中是 192px
-- 按钮应该是 48dp
.
在那种情况下,比如说,在 xxhdpi
上,图像将缩放 3/4 为 144xpx
,而 48dp
按钮高度将缩放 3,并且也是 144px
。对于 xhdpi
,这将分别为 1/2 和 2,两者都会导致 96px
.
如果您发现自动缩放的图形在某些密度下看起来很糟糕,请为该密度提供手动调整的资源。
不需要为不同的密度提供自定义 styles/dimensions——那是因为当你的 [按比例调整大小] UI 在某些密度上看起来不太好并且你决定通过使用不同的比例。例如,如果某个元素的基线(又名 mdpi
)大小为 24px
,在 ldpi
上变为 12px
,这可能太小了,因此对于 ldpi
你将其设置为 36dp=18px
(使用自定义版本的样式,或者最好是尺寸),这可能会稍微破坏 UI 比例,但看起来可能会更好。
我在为 Android 创建设计时遇到了困难。 根据我发现的一些信息,MDPI 屏幕的比例因子为 1,因此我创建了一个 48dp = 48px 的图像并将其保存在 mdpi 文件夹中,然后使用正确的比例因子,我将它保存在各个地方。
现在,我想要一个与我的图像高度相同的按钮,当然,在我的布局中我可以声明一个 48dp 高度的按钮,但是,当在其他屏幕上使用时(比如 XXHDPI)图像和按钮的高度不再相同。
编辑:添加了按钮的布局
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="50dp">
<Button
android:id="@+id/btnCamera"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="@drawable/logon_camera_button"
android:text="@string/logon_scanQrCode"
android:textColor="#ffffff"
android:textSize="20sp"
android:layout_marginLeft="48dp"
android:layout_marginRight="25dp"
android:gravity="center" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/btnCamera"
android:layout_alignLeft="@+id/btnCamera"
android:id="@+id/imgCamera"
android:src="@drawable/camera" />
</RelativeLayout>
有人对这个话题有什么建议吗?
亲切的问候
如果您的按钮背景是 ShapeDrawable 支持的形状,那么您可以通过在 drawable 文件夹中创建 xml 并将其设置为您的按钮背景来创建一个。请参阅下面的 ShapeDrawable 示例
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#f0600000"/>
<stroke android:width="3dp" android:color="#ffff8080"/>
<corners android:radius="3dp" />
<padding android:left="10dp" android:top="10dp"
android:right="10dp" android:bottom="10dp" />
</shape>
如果它是任何其他形状或带有文本,您可以创建它的 NinePatch 图像,这样文本不会根据屏幕分辨率仅拉伸没有文本拉伸的部分。建议使用 android:text 属性 添加文本,并使用 android:textSize 在 sp 中指定文本大小。所以你可以添加一个没有文本的图像并设置补丁,因为只有线条部分被拉伸而不是图像中的曲线(如果有的话)。
你可以添加一个res/values-xlarge/styles.xml
<style name="height">
<item name="android:height">50dp</item>
</style>
具有不同的设备屏幕值 - xxlarge、值 - 小等,值
并将此样式添加到您的按钮
style="@style/height"
首先删除要在视图中设置的图像。然后下载 this 软件。并在该软件 xxhdpi 上设置输入密度。并勾选所有选项。然后 9patch 调整图像大小。并将它们放在 drawable 中并设置为查看。就是这样。
总是从您要支持的最高分辨率开始。 xxhdpi
的缩放系数为 3,因此您的 xxhdpi
图像版本应为 144px
.
现在有很多 xxxhdpi
设备,所以您可能应该选择 48 * 4 = 192px。只需将最高分辨率的图像放入 -xxxhdpi
文件夹(将 mdpi
和其他内容留空),然后让自动缩放来完成它。当您在 dp
.
x4
乘数
例如如果你想保持按钮高度和图像高度的 1:1 比率,并且你的图像在 xxxhdpi
桶中是 192px
-- 按钮应该是 48dp
.
在那种情况下,比如说,在 xxhdpi
上,图像将缩放 3/4 为 144xpx
,而 48dp
按钮高度将缩放 3,并且也是 144px
。对于 xhdpi
,这将分别为 1/2 和 2,两者都会导致 96px
.
如果您发现自动缩放的图形在某些密度下看起来很糟糕,请为该密度提供手动调整的资源。
不需要为不同的密度提供自定义 styles/dimensions——那是因为当你的 [按比例调整大小] UI 在某些密度上看起来不太好并且你决定通过使用不同的比例。例如,如果某个元素的基线(又名 mdpi
)大小为 24px
,在 ldpi
上变为 12px
,这可能太小了,因此对于 ldpi
你将其设置为 36dp=18px
(使用自定义版本的样式,或者最好是尺寸),这可能会稍微破坏 UI 比例,但看起来可能会更好。