一个好的APP从直观上最能吸引用户的必定是好看的UI界面及良好的交互体验和特效,有时甚至连主要功能都是次要的!好吧,软件也到了拼脸的时代,主要看气质!
所以这篇文章就聊聊button的自定义显示,下一篇聊聊Android动画。
1.通过XML文件设置属性
定义后和未定义的对比
给button添加自定义的显示也非常简单,在button属性里加上android:background="@drawable/bt_style_bg" 其中最主要的是在drawable文件夹下的bt_style_bg.xml文件
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 被按下 -->
<item android:state_pressed="true"><shape>
<!-- 颜色渐变 startColor开始颜色,endColor结束颜色,angle开始渐变的角度(值只能为90的倍数,0时为左到右渐变,90时为下到上渐变,依次逆时针类推-->
<gradient android:angle="270" android:endColor="#ADFF2F" android:startColor="#ADFF2F"/>
<!-- 按钮边缘框 -->
<stroke android:width="1dip" android:color="#f403c9" />
<!-- 按钮圆角度 -->
<corners android:radius="2dp" />
<!-- 按钮文字和边缘距离(内边距) -->
<padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
</shape></item>
<!-- 获取焦点 -->
<item android:state_focused="true"><shape>
<gradient android:angle="270" android:endColor="#00ff00" android:startColor="#00ffff" />
<stroke android:width="1dip" android:color="#f403c9" />
<corners android:radius="2dp" />
<padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
</shape></item>
<!-- 默认 -->
<item><shape>
<gradient android:angle="180" android:endColor="#ffffff" android:startColor="#000000" />
<stroke android:width="1dip" android:color="#f403c9" />
<corners android:radius="5dip" />
<padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
</shape></item>
</selector>
shape属性的使用
圆角背景
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!-- 实心 即填充颜色-->
<solid android:color="#E2F5F9"/>
<!-- 描边 即边框颜色-->
<stroke
android:width="2dp"
android:color="#125579" />
<!-- 圆角 -->
<corners
android:topLeftRadius="180dp"
android:bottomLeftRadius="180dp"
android:topRightRadius="180dp"
android:bottomRightRadius="180dp"/>
<padding
android:left="10dp"
android:bottom="5dp"
android:top="5dp"
android:right="10dp"
/>
</shape>
圆形背景
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<padding
android:bottom="2dp"
android:left="2dp"
android:right="2dp"
android:top="2dp"></padding>
<size android:height="15dp"
android:width="15dp"></size>
<solid android:color="#DD0000"></solid>
</shape>
2. 自定义形状、颜色、图样的按钮的实现
步骤如下。
(a) 设计一张自定义形状风格背景的图片,如下图。
(b) 未点击和按下后的状态各做一张,形成一套图片,如下图。
like_normal.png
like_pressed.png
(c) 创建和编写按钮不同状态的图片使用描述文件drawable/bt_like.xml
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/like_normal" />
<item android:state_focused="true"
android:drawable="@drawable/like_pressed" />
<item android:drawable="@drawable/like_normal" />
</selector>
3.9-patch图片背景方式(注意前面有个.)
9-patch格式,是在Android中特有的一种PNG图片格式,以"***.9.png"结尾。此种格式的图片定义了可以伸缩拉伸的区域和文字显示区域,这样,就可以在Android开发中对非矢量图进行拉伸而仍然保持美观。如果使用位图而没有经过9-patch处理的话,效果就会将图片任意的拉伸,影响效果。Android中大量用了这种技术,默认的按钮的背景就是用了类似的方法实现的。我们看一下google官方的描述:
在Android sdk目录下有一个tools文件夹,在这个文件夹中找到draw9patch.bat文件,我们就是使用它来制作Nine-Patch图片的。双击打开之后,在导航栏点击File→Open 9-patch将xxx.png加载进来。
我们可以在图片的四个边框绘制一个个的小黑点,在上边框和左边框绘制的部分就表示当图片需要拉伸时就拉伸黑点标记的区域,在下边框和右边框绘制的部分则表示内容会被放置的区域。
如下图所示:
完成后,最后保存为"xxx.9.png",这样就完成了,然后将其放入到button的background中或者xml自定义的属性中。
注意:.9图只能通过背景设置拉伸,如果用src方式设置只会当作普通图片处理