在Android应用程序中使用9补丁

时间:2015-02-24 06:23:14

标签: android button android-studio nine-patch

我已经为我的Android按钮创建了我的9补丁图像,并且已经找到了(很难做到的)关于如何在应用程序中使用它们的教程(我使用Android Studio btw),而我还没有能够找到关于如何做到这一点的任何体面的解释。我能找到一个我认为是直接的,但它没有用。所以抓住这个,有人可以链接我,或者只是解释如何使用9补丁文件(正常,聚焦,按下,禁用)?

编辑:要清楚。正如我所说,我已经创建了4个图像(按钮的4种不同状态)。我不知道如何在我的应用程序中使用这些图像作为按钮。我可以采取哪些步骤来使用图像?

ACTIVITY.XML

<button
   android:style="@drawable/button_default"/>

STYLES.XML

<style name="button_default">
    <item name="android:background">@drawable/buttons</item>
</style>

BUTTONS.XML

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@drawable/default_disabled"
        android:state_enabled="false"/>

    <item
        android:drawable="@drawable/default_pressed"
        android:state_pressed="true"
        android:state_enabled="true"/>

    <item android:drawable="@drawable/default_focused"
        android:state_focused="true"
        android:state_enabled="true"/>

    <item android:drawable="@drawable/default_normal"
        android:state_enabled="true"
        android:state_pressed="false"
        android:state_focused="false"/>

</selector>

......我的抽签是“drawable-hdpi”。命名为“default_disabled.9.png”,“default_focused.9.png”,“default_normal.9.png”,“default_pressed.9.png”。

我哪里出错?

2 个答案:

答案 0 :(得分:2)

这有三个步骤。这是我的一个应用程序中的一个真实示例。

res/drawable/button_red.xml

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

    <item
        android:state_enabled="true"
        android:state_pressed="true"
        android:drawable="@drawable/button_red_pressed" />

    <item
        android:state_enabled="false"
        android:drawable="@drawable/button_disabled" />
</selector>

每个drawable(例如@drawable/button_red_normal)都是9个补丁,每个分辨率都有不同的版本(例如res/drawable-hdpi/button_red_normal.9.png

res/values/styles.xml

<style name="button_common">
    <item name="android:textColor">#ffffff</item>
    <item name="android:layout_margin">3dp</item>
    <item name="android:textSize">20sp</item>
    <item name="android:textStyle">bold</item>
</style>

<style name="button_red" parent="@style/button_common">
    <item name="android:background">@drawable/button_red</item>
</style>

我将其分为父母和子女风格,因为我在应用中有多种颜色的按钮。它们的背景只有它们的不同之处。

最后,将其添加到按钮的XML中:

style="@style/button_red"

答案 1 :(得分:-1)

九路径图像用于修复app中的图像部分。简直就是刮擦问题。

http://romannurik.github.io/AndroidAssetStudio/nine-patches.html

使用此链接生成九个补丁图像。在那里,矩形区域就是那个部分是固定的。剩下的区域正在刮擦。

下载图像时,会得到不同的文件夹图像。请将图像放在android res的相同文件夹中(如hdpi,xhdpi,mdpi)并使用。

<ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/thumb8" />