你好安卓开发者,
我的 UI 设计师想要一个复杂的形状按钮,但我不知道怎么做,请帮助我。
这是她想要的设计图片
有很多方法可以做到这一点,最简单的可能是为每个按钮创建一个 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 新手或者之前没有这样做过,我建议您先尝试我上面所说的内容。