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

Android:可以使用9补丁来绘制按钮吗?(见图),android,button,colors,nine-patch,Android,Button,Colors,Nine Patch,如果我想使用图像作为按钮背景,我该如何做?9补丁?还是固定映像(ldip/mdip/hdip) 谢谢 编辑: 感谢您的两个回复,我知道draw9patch工具,但我不知道如何定义垂直区域,这样就不会破坏渐变了? 谢谢 我相信9-patch是更优雅的解决方案。您可以使用Android SDK中“工具”文件夹中的“draw9patch”工具来完成此操作。Android官方文档很好地概述了如何使用它:我相信9补丁将是更优雅的解决方案。您可以使用Android SDK中“工具”文件夹中的“draw9pa

如果我想使用图像作为按钮背景,我该如何做?9补丁?还是固定映像(ldip/mdip/hdip)

谢谢

编辑:

感谢您的两个回复,我知道draw9patch工具,但我不知道如何定义垂直区域,这样就不会破坏渐变了?
谢谢

我相信9-patch是更优雅的解决方案。您可以使用Android SDK中“工具”文件夹中的“draw9patch”工具来完成此操作。Android官方文档很好地概述了如何使用它:

我相信9补丁将是更优雅的解决方案。您可以使用Android SDK中“工具”文件夹中的“draw9patch”工具来完成此操作。Android官方文档很好地概述了如何使用它:

它应该是9-patch。您必须仔细选择可拉伸区域,以避免破坏渐变。用于预览它在按钮上的外观。

它肯定应该是9-patch。您必须仔细选择可拉伸区域,以避免破坏渐变。用于预览按钮上的外观。

要创建所需的自定义按钮,请执行以下操作:

  • 一种
    (状态列表)可绘制文件,它为默认/按下/聚焦/禁用等状态引用不同的可绘制文件

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

因此,自定义按钮可绘制使用以下文件夹结构:

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/
     ...
res/
可牵引/
mybtn.xml#(状态列表)
可拉伸hdpi/
mybtn_default.9.png
mybtn_.9.png
mybtn_.9.png
mybtn_.9.png
可拉伸mdpi/
mybtn_default.9.png
mybtn_.9.png
mybtn_.9.png
mybtn_.9.png
可拉伸xhdpi/
...

要创建所需的自定义按钮:

  • 一种
    (状态列表)可绘制文件,它为默认/按下/聚焦/禁用等状态引用不同的可绘制文件

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

因此,自定义按钮可绘制使用以下文件夹结构:

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/
     ...
res/
可牵引/
mybtn.xml#(状态列表)
可拉伸hdpi/
mybtn_default.9.png
mybtn_.9.png
mybtn_.9.png
mybtn_.9.png
可拉伸mdpi/
mybtn_default.9.png
mybtn_.9.png
mybtn_.9.png
mybtn_.9.png
可拉伸xhdpi/
...

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

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

因为你的按钮有两种颜色,在y轴上只标记了几个(2-3)像素。因为你的按钮有两种颜色,所以标记的颜色就只有几个(2-3)y轴上的像素。我会用它来代替SDK附带的工具。这个工具很可怕,web版本更容易。我会用它来代替SDK附带的工具。这个工具很可怕,web版本更容易。