1:shape总结

1):shape文件是放置在drawable文件下的。res/drawable/filename.xml.

2):shape类型:android:shape。

一共同拥有四种:rectangle。oval,line,ring。


3):corners标签:定义圆角。当且仅当控件类型位rectangle时才有作用。

android:radiuse位圆角的半径。

当然也能够单独为每一个圆角进行设置。


4):gradient标签:颜色渐变。

android:angle:颜色渐变的方向。0是从左到右;90度,是从下到上。

angle必须保证是45的倍数。


android:startColor,android:centerColor,android:endColor:分别为颜色的起始颜色。中间颜色和结束颜色。假设没有设置中间颜色,那么就从起始颜色渐变到结束颜色。否则回从起始颜色渐变到中间颜色,再从中间颜色渐变到结束颜色。

android:centerX。android:centerY:我认为这两个属性有存在的必要性的前提是要有

android:centerColor。原因是当我没有设置android:centerColor属性时,随意的改变这两个属性的值都不会改变控件的显示效果。这两个属性是渐变的中间位置。大小都是再0.0--1.0。

android:gradientRadius
渐变的半径大小。仅当渐变类型位radial的时候才有作用。


android:type
渐变的类型。有三种情况:linear,radial,sweep。

5):solid标签:
控件的颜色填充。

6):stroke标签:shape的线条。

android:width:线条的宽度。
android:color:线条的颜色。

android:dashWidth:线条的长度。当设置了该值时。将会显示位虚线。

除非你dashWidth设置的值非常大。那么看起来还是一条完整的线条。


android:dashGap:线条之间的距离。

仅仅在设置了dashWidth属性的情况下才会有效果。能够觉得是虚线之间的宽度。


7):padding标签:内边距。控件内容和控件四条边的距离。这里有点奇怪。等写完了控件样式定制再说吧。

2:控件样式定制


有时候android系统自带的控件类型看起来不是非常美观。有时我们须要自定义想要的样式效果。

此时就能够用到上面的shape
drawable了。详细用法例如以下:

这里为一个button自己定义样式。

有一个默认button样式和一个button按下之后的样式。


首先定义两个shape文件:button_normal.xml和button_pressed.xml。

button_normal.xml:

<?xml version="1.0" encoding="utf-8"?

>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<corners android:radius="5dp"></corners>
<solid android:color="#ff0000"/>
<stroke
android:width="1dp"
android:color="#00ff00"
android:dashWidth="2dp"
android:dashGap="2dp"/> </shape>

button_pressed.xml


<?

xml version="1.0" encoding="utf-8"?

>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
>
<corners
android:radius="10dp"
></corners> <!-- <solid
android:color="#ffffff"
></solid> --> <padding android:left="20dp"
android:top="1dp"
></padding> <gradient
android:startColor="#ffffff"
android:endColor="#000000"
android:angle="0"
android:centerX="0.1"
android:centerY="0.2"
/> <stroke
android:width="1dp"
android:color="#00ff00"
android:dashWidth="1000dp"
android:dashGap="3dp"
>
</stroke> </shape>

眼下已经写好了两种样式文件了。

那么怎么推断是按下了的状态呢? 这里引入stateDrawable文件了。

它也是採用xml方式来定义的。在控件的不同状态能够用不同的样式来显示同一个控件。

比方:button有非常多种状态,按下状态,有焦点状态。和正常状态。


范例:button_style.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/button_pressed"></item>
<item android:drawable="@drawable/button_normal"></item> </selector>

这个文件会从上到下一直匹配下来。直到找到了一个item满足控件眼下的状态。android:state_pressed 是button被按下状态。

以下一个item是默认样式,能够匹配不论什么一种状态。所以要放在最以下。否则其它全部的定义都不起作用。


最后一步:给button加入样式。

 <Button
android:text="@string/button_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button_style"

这样就得到了button被按下和正常显示两种状态了。

还记得之前有说过padding非常奇怪吗?在button_normal.xml和button_pressed.xml两个文件里我仅仅定义了一个padding,可是无论在按钮处于哪种状态下。padding属性都会应用到button上。刚学习android。希望大神多多不吝赐教。



android shape总结 和控制的风格定制的更多相关文章

  1. [转]Android Shape渲染的使用(经典,学习研究不后悔)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://mzh3344258.blog.51cto.com/1823534/1215749 ...

  2. android shape使用总结

    今天使用到shape,这个里面有很多属性,在这里我记录一下各个属性的使用的情况以及所代表的意思 <?xml version="1.0" encoding="utf- ...

  3. android:shape

    android:shape=["rectangle" | "oval" | "line" | "ring"] shape ...

  4. Android shape的使用(圆角矩形)

    <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http: ...

  5. android shape详解

    shape--> shape属性: rectangle: 矩形,默认的形状,可以画出直角矩形.圆角矩形.弧形等 solid: 设置形状填充的颜色,只有android:color一个属性 andr ...

  6. android shape(如自定义Button)

    Shape 前言:有时候会去自己去画一些Button的样式来展现在UI当中,其中主要用到的就是Shape 先来看一段代码: <?xml version="1.0" encod ...

  7. android shape的使用详解以及常用效果(渐变色、分割线、边框、半透明阴影效果等)

    shape使用.渐变色.分割线.边框.半透明.半透明阴影效果. 首先简单了解一下shape中常见的属性.(详细介绍参看  api文档 ) 转载请注明:Rflyee_大飞: http://blog.cs ...

  8. Android Shape画圆,矩形

    画圆环代码如下: 画圆环,外边的边界宽度大一点即可: <?xml version="1.0" encoding="utf-8"?> <shap ...

  9. ANDROID SHAPE画圆形背景_ANDROID实现角标布局

    ANDROID SHAPE画圆形背景_ANDROID实现角标布局 <?xml version="1.0" encoding="UTF-8"?> &l ...

随机推荐

  1. 轻狂写的桌面日历秀NSIS脚本供大家参考学习

    原文 轻狂写的桌面日历秀NSIS脚本供大家参考学习 现在共享桌面日历秀的NSIS脚本,以便交流学习.此脚本实现的功能如下: 7-Zip打开看不到内容.自动读取原安装路径,如果有则不允许更改.取得编译日 ...

  2. testbench中将外部数据引入输出的方法(转载)

    在进行HDL的仿真测试时,除了用较为直观的波形仿真图像以外,通过编写测试文件testbench进行仿真并将仿真结果保存在对应的文件,显得尤为重要.文件的操作主要用到读和写两种操作. 1. 读操作 读操 ...

  3. urlrewrite使用地址重写

    地址重写: 主要是为了站点的安全. 比如我们平时的地址请求 地址重写前,訪问路径是: /read.egov?action=read&bid=2 地址重写后,訪问路径是:/read-read-2 ...

  4. 创建线程的两种方式:继承Thread类和实现Runnable接口

    第一种方式:继承Thread类 步骤:1.定义类继承Thread 2.覆写Threa类的run方法. 自定义代码放在run方法中,让线程运行 3.调用线程的star方法, 该线程有两个作用:启动线程, ...

  5. springMVC3得知(五岁以下儿童)--MultiActionController

    Spring为了提供一个多动作控制器,您可以使用它的几个行动统一到一个控制器,这可以放在一起功能. 多动作控制器存在在一个单独的包中--org.springframework.web.mvc.mult ...

  6. sharepoint 2013 配件控制FileUpload如何检查是否图像的方法

    它记录的附件控制FileUpload如何检查是否图像的方法: function checkImg() { var fileObj =document.getElementById('<%=Fil ...

  7. 数据结构《21》----2014 WAP 第一个问题----Immutable queue

    2014 WAP第一个问题----实现一个不可改变的队列: 看似非常easy.. 其实,不同的版本号之间的效率差距可能是巨大的.. 甚至难以想象. . 使用前STL图书馆queue我们进行了比较.大差 ...

  8. HDU - 5008 Boring String Problem (后缀数组+二分法+RMQ)

    Problem Description In this problem, you are given a string s and q queries. For each query, you sho ...

  9. CSS浏览器兼容性问题集()两

    11.非常适合    高度适合于被改变时所述内目标高度的外层的高度不能自己主动调节,尤其是排队对象时margin 要么paddign 时. 例:   #box {background-color:#e ...

  10. 我展示了视频采集前端vfe和camera,decode等交互驱动的体系结构

    到现在都与处理器接触较多.更深入的驱动主要是前端视频采集.控制TI的DM64xx,DM3730.纪氏A31等待.他们发现,它们的使用的基本框架的是不一样的. 当然,典型camera例如ov系列,dec ...