如果你对Android系统自带的UI控件感觉不够满意,可以尝试下自定义控件,我们就以Button为例,很早以前Android123就写到过Android Button按钮控件美化方法里面提到了xml的selector构造。当然除了使用drawable这样的图片外今天Android开发网谈下自定义图形shape的方法,对于Button控件Android上支持以下几种属性shape、gradient、stroke、corners等。

我们就以目前系统的Button的selector为例说下:

 <shape>                <gradient                    android:startColor="#ff8c00"                    android:endColor="#FFFFFF"                    android:angle="270" />                <stroke                    android:width="2dp"                    android:color="#dcdcdc" />                <corners                    android:radius="2dp" />                <padding                    android:left="10dp"                    android:top="10dp"                    android:right="10dp"                    android:bottom="10dp" />            </shape>

对于上面,这条shape的定义,分别为渐变,在gradient中startColor属性为开始的颜色,endColor为渐变结束的颜色,下面的 angle是角度。接下来是stroke可以理解为边缘,corners为拐角这里radius属性为半径,最后是相对位置属性padding。

对于一个Button完整的定义可以为

 <?xml version="1.0" encoding="utf-8"?>    <selector        xmlns:android="http://schemas.android.com/apk/res/android">        <item android:state_pressed="true" >            <shape>                <gradient                    android:startColor="#ff8c00"                    android:endColor="#FFFFFF"                    android:angle="270" />                <stroke                    android:width="2dp"                    android:color="#dcdcdc" />                <corners                    android:radius="2dp" />                <padding                    android:left="10dp"                    android:top="10dp"                    android:right="10dp"                    android:bottom="10dp" />            </shape>        </item>        <item android:state_focused="true" >            <shape>                <gradient                    android:startColor="#ffc2b7"                    android:endColor="#ffc2b7"                    android:angle="270" />                <stroke                    android:width="2dp"                    android:color="#dcdcdc" />                <corners                    android:radius="2dp" />                <padding                    android:left="10dp"                    android:top="10dp"                    android:right="10dp"                    android:bottom="10dp" />            </shape>        </item>        <item>                  <shape>                <gradient                    android:startColor="#ff9d77"                    android:endColor="#ff9d77"                    android:angle="270" />                <stroke                    android:width="2dp"                    android:color="#fad3cf" />                <corners                    android:radius="2dp" />                <padding                    android:left="10dp"                    android:top="10dp"                    android:right="10dp"                    android:bottom="10dp" />            </shape>        </item>    </selector>


注意Android123提示大家,以上几个item的区别主要是体现在state_pressed按下或state_focused获得焦点时,当当来判断显示什么类型,而没有state_xxx属性的item可以看作是常规状态下。

更多相关文章

  1. Android 中自定义属性(attr.xml,TypedArray)的使用!
  2. Android 自定义view组件
  3. 关于android:scrollbarStyle属性
  4. android自定义按钮按下效果
  5. android listview每个item定义动画呈现
  6. Android shape自定义button样式
  7. android的布局属性中padding和margin的区别

随机推荐

  1. Android 5.1 API 22 所有sdk文件下载地址
  2. ANDROID 绝对布局 相对布局 Linear…
  3. Android(安卓)编译,打包、签程名详细教
  4. android 带文字的ImageButton
  5. 修改标题栏的高度
  6. Android中android:layout_width与 androi
  7. 关于android LinearLayout的比例布局
  8. Android 之 五大布局案例
  9. android xml布局文件属性说明
  10. Android Gesture 手势识别使用实例 - And