Android复杂的形状按钮

时间:2013-11-05 19:39:55

标签: android button user-interface shape

Hello android开发者,

我的UI设计师想要一个复杂的形状按钮,但我不知道怎么做,请帮助我。

这是她想要的设计image

1 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点,最简单的方法可能是为每个按钮创建一个xml选择器,它将遵循你想要的状态(正常,按下,禁用等)。例如:

创建可绘制的hex_button_one.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- Pressed -->
    <item android:state_pressed="true" >
       <bitmap android:antialias="true" 
               android:dither="true" 
               android:src="@drawable/myButtonPressed" />
    </item>

    <!-- normal -->
    <item>
        <bitmap android:antialias="true" 
               android:dither="true" 
               android:src="@drawable/myButtonNormal" />
    </item>
</selector>

然后使用布局xml文件,您可以设置按钮的背景

 <Button android:id="@+id/hexButtonOne"
        android:layout_height="26dp"
        android:layout_width="26dp"
        android:layout_centerHorizontal="true"
        android:background="@drawable/hex_button_one"/>

这个问题的主要问题是你会得到一个响应你触摸的矩形区域,如果按钮中的按钮组织起来,那么点击一个按钮实际上可能是另一个。

您可以通过覆盖Button类的onTouchEvent来解决此问题(意味着您必须对其进行扩展),如果它不在您希望它所在的区域内,则返回false。

总的来说,最好 - 也是最完整 - 的方法是使用onMeasure,onDraw等方法扩展View类,以完全按照您的意愿执行。但是,如果您是Android新手,或者之前没有这样做,我建议先尝试上面所说的内容。