android - 如何创建最高质量的 Android 按钮?

标签 android android-layout android-widget photoshop

<分区>

我一直在为我的应用程序设计/创建按钮,但是当我将它们与非常成功的商业应用程序(如 Google+ 或 Facebook)进行比较时,图像质量看起来就不一样了。我查看了模拟器和设备上的按钮。

我使用 Photoshop CS5 并始终确保我在 RGB 和 300 DPI 中设计 .png。 enter image description here

然后我在 XML 中创建按钮,指定按下和聚焦状态:

about_btn.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/about_down"
          android:state_pressed="true" />
    <item android:drawable="@drawable/about_down"
          android:state_focused="true" />
    <item android:drawable="@drawable/about_up" />
</selector>

然后我在我的布局中使用按钮,如下所示:

ma​​in.xml

        <Button
            android:id="@+id/about_button_xml"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/about_btn"
            android:paddingTop="5dp" />

按钮在布局中的缩放方式是否存在某种类型的缺陷,或者我保存/设计按钮的格式是否错误,我是否使用了错误的软件……我只是不确定。

您推荐哪些设计规范和软件?任何建议或教程将不胜感激。

最佳答案

为 m0skit0 的回答添加一点特殊性:您可能应该以 320dpi 进行设计。取320dpi版本放入drawable-xhdpi,240和160dpi缩放版本放入drawable-hdpidrawable-mdpi。如果您不提供设备屏幕密度的资源,系统尝试放大低密度图像(或缩小高密度图像,如果提供的话,但是它很少像 Photoshop 那样做得好,并且无法判断如何在必要时清晰地缩放图像的奇数部分)。

如果您只在 drawable 文件夹中提供一张图片,由于历史原因,系统将假定它是 160dpi - 这几乎肯定不是您想要的;您最终会得到原始图像的模糊、过大和放大版本。

具体来说:drawable-mdpi 中的 100px 图像或只是普通 drawable 将使用缩放在 xhdpi 屏幕上呈现为 200px 图像。如果你真的将 ~320dpi 的图像设计为 100px,正确的做法是将 100px 版本放入 drawable-xhdpi,将 50px 版本放入 drawable-mdpi,并且drawable-hdpi 中的 75px 版本。

Google 在他们的网站上写了很多关于这方面的文章;查看他们的 designer infodev info .视觉上:

Scaled icons (来自上述 Android Designer 网站的 CC Attribution 2.5 许可图片)。

关于android - 如何创建最高质量的 Android 按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14484184/

相关文章:

android - 如何将 EditText inputType 指定为数字和密码?

android - 在 ViewPager 中对不同 fragment 使用相同布局时,将布局值相互混合

Android:旋转动画完成动画后恢复到真实状态?

android - 在 PopupMenu 显示时旋转,获取 android.view.WindowLeaked

android - 检测是否在 Android 辅助功能设置中启用了 'High contrast'

Android模拟器,onClick和onTouch问题

android - 导入无法解决

Android 如何在键盘弹出时忽略自动调整大小?

android - 非常简单的代码,但是使用 Fragment 时出现错误 "Activity has been destroyed"

用于任意字符串的 Android 选择器小部件