Shape:定义的几何形状的标签

属性:

 

android:shape  这是标签的主要属性,可以定义shape的形状,可以设置成:rectagle矩形,oval椭圆,line水平直线,ring环形


子标签包括: 渐变、   填充、   描边、   圆角、  内补偿

shape的颜色渐变效果

android:startColor 起始颜色

android:endColor  结束颜色          

android:angle  渐变角度,比如说从白变到黑。是从上向下变到黑还是从左到右变到黑或者是斜着变?就是由这个属性控制的

android:type  渐变的样式 liner线性渐变 radial环形渐变sweep

shape的内部填充效果

android:color  填充的颜色这里设置的颜色将会填充到shape内部的所有区域

shape的边缘线效果

android:width 边缘线的宽度

android:color 边缘线的颜色

android:dashWidth 边缘线用虚线,形如“- - - - - - - --”这样的形式。这个属性表示“-”小元素的宽度

android:dashGap边缘线用虚线,形如“- - - - - - - --”这样的形式。这个属性表示“-”小元素之间的间隔距离

shape的棱角圆弧效果(如果不设置该标签,将会默认为尖角效果

android:radius  圆角的半径

android:topRightRadius 右上圆角半径

android:bottomLeftRadius 右下圆角角半径

android:topLeftRadius 左上圆角半径

android:bottomRightRadius 左下圆角半径

shape的内补偿距离,也就是shape的内部填充物(比如颜色或者图片)距离shape的边缘的距离

android:bottom 底部补偿

android:left 左边补偿

android:right 右边补偿

android:top 上面补偿

layer-list将多个元素按照顺序逐层叠加

如下例子:

                             



Selector:选择器,内置开发者自己定义的,系统会根据组件的状态选择相应的来呈现。
直接这样解释可能不太好理解,举个例子来说明一下吧:

布局文件中有如下代码:

  --------------注释1        

my_selector.xml文件:

<?xml version="1.0" encoding="utf-8"?> ----------------注释2 ---------------注释3

 上述例子中   image_view的注释1处声明了ImageView的呈现资源是my_selector.xml文件的内容。而在my_selector.xml文件中又声明了两种呈现:1.在按压状态下展示picture1这种图片;2.在默认状态下展示picture2这种图片。   

那么当程序跑起来的时候image_view首先展示的是注释3处的picture2这张默认图,当用户触摸image_view时,image_view会处于pressed状态,这是my_selector就会选择注释2出的,呈现picture1了。

标签的基础状态属性有如下:

android:state_selected  是否选中

android:state_focused  是否获得了焦点

android:state_pressed  是否被按下

android:state_enabled  是否可用

在实际应用中,不止存在以上这几种状态,还有很多由上述状态组合起来的复合状态,如下例子:
    <?xml version="1.0" encoding="utf-8" ?>                                                                                                                                                   

以上例子就是一些复合状态的举例。但这个selector是绝对不可用的,这里需要开发者额外注意一下,下面来分析原因:

系统在selector寻找符合要求的item时是按照代码的顺序从上向下遍历的,一旦发现符合状态的item就直接使用它,并停止继续寻找!所以比如把

这样的item放在第一位的话,那在系统寻找item时,遍历到这个item,它没有指定特殊状态,必然符合状态要求(可以理解为万能钥匙),所以就会直接使用这个item而不再继续向下遍历了。

所以开发者在布置时要注意一下:如果把这些状态理解成集合的话,那么位于下面的集合一定不要是上面某个集合的子集,否则是不会轮到下面这个集合出场的。




更多相关文章

  1. Android中StateListDrawable的种类(状态的种类)
  2. 沉浸式状态栏的实现
  3. Android实现背景图与状态栏融合
  4. Android如何获取网络连接状态及怎样调用网络配置界面
  5. Android 网络状态实时监测
  6. Android ListView设置Item选中状态
  7. Android全屏(包含3种隐藏顶部状态栏及标题栏和一种隐藏Android 4.
  8. android判断当前网络状态,eth wifi pppoe等
  9. Android获取当前网络状态和获取当前设备网络ip地址

随机推荐

  1. Android(安卓)Toast提示封装实例代码
  2. android标题栏中添加返回按钮
  3. Android(安卓)Studio基础学习(入门五)——
  4. Android动态设置android:drawableLeft|Ri
  5. android AlertDialog中EditText无法显示
  6. 使用Android(安卓)Studio遇到的一些常见
  7. android中涉及的字体修改
  8. Handler与Android进程管理
  9. Android(安卓)开发日常积累
  10. Android中的TextView