如果你对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" />       <solid android:color="#ff9d77"/>       <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可以看作是常规状态下。

附shape全部属性定义:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"     android:shape=["rectangle" | "oval" | "line" | "ring"] >     <gradient         android:angle="integer"         android:centerX="integer"         android:centerY="integer"         android:centerColor="integer"         android:endColor="color"         android:gradientRadius="integer"         android:startColor="color"         android:type=["linear" | "radial" | "sweep"]         android:usesLevel=["true" | "false"] />     <solid         android:color="color" />     <stroke         android:width="integer"         android:color="color"         android:dashWidth="integer" <!--点划线-->        android:dashGap="integer" />     <padding         android:left="integer"         android:top="integer"         android:right="integer"         android:bottom="integer" />     <corners         android:radius="integer"         android:topLeftRadius="integer"         android:topRightRadius="integer"         android:bottomLeftRadius="integer"         android:bottomRightRadius="integer" /> </shape>

更多相关文章

  1. [转]Android高手进阶教程(四)之----Android 中自定义属性(attr.x
  2. Android动画效果 translate、scale、alpha、rotate 切换Activity
  3. Android基础-四种基本布局和自定义控件的步骤
  4. android:layout_gravity="right"控制LinearLayout中控件居右显示
  5. Android自定义对话框Dialog以及主题和样式
  6. Android使用自定义字体的方法
  7. 关于 Android 程序使用 Support Library 属性的几点说明

随机推荐

  1. Android实训案例(八)——单机五子棋游戏,自
  2. Android热更新之so库的热更新
  3. unity接android sdk的碰到的一些问题记录
  4. Android 常见滤镜的实现,怀旧,底片,浮雕,Colo
  5. 二 Android优势和劣势分析(面试华为的人
  6. android之各种图形绘制
  7. Android的开源与闭源
  8. 有关WiFi SSID的获取
  9. 通过Canvas的叠加实现Android中环形View
  10. 指尖上的Android之实战篇---前导(一)