本人在美工方面一直是比较白痴的,对于一些颜色什么乱七八糟的非常头痛,但是在Android编程中这又是经常涉及到的东西,没办法,只有硬着头皮上。


Android中常常使用shape来定义控件的一些显示属性,今天看了一些shape的使用,对shape有了大体的了解,稍作总结:

先看下面的代码:
       
           
           
           
                            android:startColor="#ff8c00"
                android:endColor="#FFFFFF"
                android:angle="270" />
           
                            android:width="2dp"
                android:color="#dcdcdc" />
           
                            android:radius="2dp" />
                            android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
       

solid:实心,就是填充的意思
android:color指定填充的颜色

gradient:渐变
android:startColor和android:endColor分别为起始和结束颜色,ndroid:angle是渐变角度,必须为45的整数倍
另外渐变默认的模式为android:type="linear",即线性渐变,可以指定渐变为径向渐变,android:type="radial",径向渐变需要指定半径android:gradientRadius="50"。

stroke:描边
android:width="2dp" 描边的宽度,android:color 描边的颜色。
我们还可以把描边弄成虚线的形式,设置方式为:
android:dashWidth="5dp"
android:dashGap="3dp"
其中android:dashWidth表示'-'这样一个横线的宽度,android:dashGap表示之间隔开的距离。

corners:圆角
android:radius为角的弧度,值越大角越圆。
我们还可以把四个角设定成不同的角度,方法为:
        android:topRightRadius="20dp"    右上角
        android:bottomLeftRadius="20dp"    右下角
        android:topLeftRadius="1dp"    左上角
        android:bottomRightRadius="0dp"    左下角
 />
这里有个地方需要注意,bottomLeftRadius是右下角,而不是左下角,这个有点郁闷,不过不影响使用,记得别搞错了就行。
还有网上看到有人说设置成0dp无效,不过我在测试中发现是可以的,我用的是2.2,可能修复了这个问题吧,如果无效的话那就只能设成1dp了。

padding:间隔
这个就不用多说了,XML布局文件中经常用到。


大体的就是这样,以下是一个使用的具体示例:用在Selector中作为Button的背景,分别定义了按钮的一般状态、获得焦点状态和按下时的状态,具体代码如下:

main.xml:
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TestShapeButton"
    android:background="@drawable/button_selector"
    />


button_selector.xml:
<?xml version="1.0" encoding="utf-8"?>
    xmlns:android="http://schemas.android.com/apk/res/android">
   
       
           
                            android:startColor="#ff8c00"
                android:endColor="#FFFFFF"
                android:type="radial"
                android:gradientRadius="50" />
           
                            android:width="2dp"
                android:color="#dcdcdc"
                android:dashWidth="5dp"
                android:dashGap="3dp" />
           
                            android:radius="2dp" />
                            android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
       

   


   
       
                            android:startColor="#ffc2b7"
                android:endColor="#ffc2b7"
                android:angle="270" />
                            android:width="2dp"
                android:color="#dcdcdc" />
                            android:radius="2dp" />
                            android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
       

   


          
       
           

                            android:width="2dp"
                android:color="#fad3cf" />
                            android:topRightRadius="5dp"
                android:bottomLeftRadius="5dp"
                android:topLeftRadius="0dp"
                android:bottomRightRadius="0dp"
            />
                            android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
       
   

运行效果如下图:

一般状态:

 

获得焦点状态:

 

按下状态:

 

 

更多相关文章

  1. Android(安卓)5.x--使用Material Theme加Palette
  2. Android(安卓)广播监听网络状态
  3. 浅谈android的selector,背景选择器(看着有用就转载了)
  4. Android基础入门教程——8.1.1 Android中的13种Drawable小结 Par
  5. Android(安卓)UI开发第十二篇――动画效果Animation(一)
  6. Android状态check、focused、pressed、selected小结
  7. Android(安卓)UI开发第十二篇——动画效果Animation(一)
  8. 最新!!Android(安卓)状态栏详细开发,5分钟精通状态栏
  9. Android基础入门教程——8.1.1 Android中的13种Drawable小结 Par

随机推荐

  1. 摄像头的使用之(Camera的使用)
  2. Android中AsyncTask的简单总结
  3. Android实现滑动的七种方法实践
  4. 分享Android(安卓)recovery updater-scri
  5. 如何测试并调试基于 NDK 的 Android(安卓
  6. 关于Android(安卓)WebView不支持location
  7. 手把手教你用android studio创建第一个安
  8. Android(安卓)WebView拦截iframe标签内部
  9. 关于Android的网络连接ConnectivityManag
  10. android studio 利用productFlavors 生成