Android:可以使用9个补丁来绘制按钮吗? (见图)

时间:2011-06-16 05:26:11

标签: android button colors nine-patch

Sample button

如果我想将图像用作按钮背景,我该怎么办? 9补丁?或修复图像(ldip / mdip / hdip)?

谢谢!

编辑:

感谢两个回复,我知道工具draw9patch,但我不知道如何定义垂直区域,所以它不会破坏渐变? 谢谢!

4 个答案:

答案 0 :(得分:3)

我认为9补丁将是更优雅的解决方案。您可以使用Android SDK中“tools”文件夹中的“draw9patch”工具执行此操作。官方Android文档很好地概述了如何使用它:http://developer.android.com/guide/developing/tools/draw9patch.html

答案 1 :(得分:3)

要创建自定义按钮,您需要:

  • 一个<selector>(状态列表)drawable,引用默认/按下/聚焦/禁用/等的不同drawable。的状态。

  • 每个州的每个密度(ldpi / mdpi / hdpi / xhdpi)都应该有九个补丁(.9.png)可绘制。请注意,框架可以向上或向下扩展,因此您不需要 为每个密度提供九个补丁,但为了获得最佳效果,您应该这样做。

因此,您的自定义按钮drawable使用以下文件夹结构:

res/
  drawable/
     mybtn.xml                # <selector> (state list)
  drawable-hdpi/
     mybtn_default.9.png
     mybtn_pressed.9.png
     mybtn_focused.9.png
     mybtn_disabled.9.png
  drawable-mdpi/
     mybtn_default.9.png
     mybtn_pressed.9.png
     mybtn_focused.9.png
     mybtn_disabled.9.png
  drawable-xhdpi/
     ...

答案 2 :(得分:0)

绝对应该是9补丁。您必须仔细选择可拉伸区域,以免破坏渐变。使用the tool预览按钮的外观。

答案 3 :(得分:0)

我不确定它是否看起来不错,但由于9-patch实际上允许您设置多个可伸缩区域,您可以尝试设置多个1像素高的垂直区域,并将所有这些区域拉伸(基本上,每2个像素有一条可拉伸的线条)。这看起来不像渐变效果好,但如果你不拉伸太多就可能足够好。