Android:shape selector and layer-list

shape

作用:定义控件一些默认样式

使用:

1)在res/drawable下创建xml文件用于定义shape,如:my_button.xml;

2)在代码或xml布局文件中控件background属性引用此文件,如在布局文件中的控件:android:background=”@drawable/my_button”。

属性:

<?xml version="1.0" encoding="utf-8"?>
<!--
    shape的形状默认为矩形,可设置为矩形(rectangle)、椭圆形(oval)、线性(line)、环形(ring)
    
    注意以下属性只有在shape为ring时才能使用:
    android:innerRadius         内环半径
    android:innerRadiusRatio    浮点型,以环宽度比表示内环半径,
                                如:android:innerRadiusRatio="5"表示内环半径等于环的宽度除以5,
                                此值可被android:innerRadius覆盖
    android:thickness           环的厚度
    android:thicknessRatio      浮点型,以环宽度比表示环的厚度
                                如:android:thicknessRatio="2"表示环厚度等于环的宽度除以2,
                                此值可被android:thickness
    android:useLevel            布尔型,如果当做是LevelListDrawable使用时值为true,否则为false
    以下以shape为rectangle为例
 -->
 
<shape
xmlns:android:"http://schemas.android.com/apk/res/android"
android:shape="rectangle">
 
<!--
圆角conner
    android:radius               整形 半径
    android:topLeftRadius        整形 左上角半径
    android:topRightRadius       整形 右上角半径
    android:bottomLeftRadius     整形 左下角半径
    android:bottomRightRadius    整形 半径
 -->
    <conner
        android:radius               = "8dp"
        android:topLeftRadius        = "5dp"
        android:topRightRadius       = "15dp"
        android:bottomLeftRadius     = "20dp"
        android:bottomRightRadius    = "25dp"
        />
        
    <!--
        渐变色gradient
        android:startColor      颜色值    起始颜色
        android:endColor        颜色值    结束颜色     
        android:centerColor     颜色型    渐变中间色
        android:angle           整型      渐变角度
             (PS:当angle=0时,渐变色是从左向右。 
                                然后逆时针方向转,当angle=90时为从下往上。
                                angle必须为45的整数倍)
 
        android:type            ["linear"|"radial"|"sweep"]
                                [默认线性|  放射  |扫描线性]
 
        android:useLevel        ["true" | "false"]
         如果要使用LevelListDrawable对象,就要设置为true。
         设置为true无渐变。false有渐变色
 
        android:gradientRadius  整型      渐变色半径
        当android:type="radius" 时以下属性方可使用且必须使用
        android:centerX         整型      渐变中心点X坐标的相对位置
        android:centerY         整型      渐变中心点Y坐标的相对位置
     -->
    <gradient
        android:startColor = "#FFFF0000"
        android:endColor   = "#00000000"
        android:angle      = "45"
     />
 
<!-- 
     内边距padding
     android:left   整型 左内边距
     android:right  整型 右内边距
     android:top    整型 上内边距
     android:botom  整型 下内边距
     -->
     <padding
          android:left  = "10dp"
          android:right = "10dp"
          android:top   = "10dp"
          android:botom = "10dp"
      />
 
<!-- 
大小size
    android:width    整型 宽度
    android:height   整型 高度
 -->
<size
    android:width  = "100dp"
/>
 
<!-- 
内部填充solid
    android:color  颜色值 填充颜色
 -->
<solid
    android:color = "#FFFF9d70"
/>
 
<!-- 
描边stroke
    android:width       整型    描边的宽度
    android:color       颜色值  描边的颜色
    android:dashWidth   整型    表示描边的样式是虚线的宽度
                        值为0时,表示为实线。值大于0则为虚线。
    android:dashGap     整型    表示描边为虚线时,虚线之间的间隔
 -->
<stroke
    android:width="2dp"
    android:color="#fbfbfbfb"
/>
 </shape>


 

selector

作用:定义控件不同状态下的显示

使用:

1)res/drawable下创建xml文件用于定义selector,如:my_button.xml;

2)在代码或xml布局文件中控件background属性引用此文件,如在布局文件中的控件:android:background=”@drawable/my_button”

实现

android:state_selected是选中

android:state_focused是获得焦点

android:state_pressed是点击

android:state_enabled是设置是否响应事件,指所有事件

android:state_window_focused默认时的背景图片


android:state_active=["true" | "false"] 
android:state_checkable=["true" | "false"] 
android:state_checked=["true" | "false"] 

他们的执行是有执行顺序

条件限定越细致,则应该放到前面

 

<?xml version="1.0" encoding="utf-8" ?>       
<selector xmlns:Android="http://schemas.android.com/apk/res/android">     
<!-- 默认时的背景图片-->      
<item android:drawable="@drawable/pic1" />        
<!-- 没有焦点时的背景图片 -->      
<item   
   android:state_window_focused="false"        
   android:drawable="@drawable/pic_blue"   
   />       
<!-- 非触摸模式下获得焦点并单击时的背景图片 -->      
<item   
   android:state_focused="true"   
   android:state_pressed="true"     
   android:drawable= "@drawable/pic_red"   
   />     
<!-- 触摸模式下单击时的背景图片-->      
<item   
   android:state_focused="false"   
   android:state_pressed="true"     
   android:drawable="@drawable/pic_pink"   
   />      
<!--选中时的图片背景-->      
<item   
   android:state_selected="true"   
   android:drawable="@drawable/pic_orange"   
   />       
<!--获得焦点时的图片背景-->      
<item   
   android:state_focused="true"   
   android:drawable="@drawable/pic_green"   
   />       
</selector>   


layer-list

作用:将多个图片或上面两种效果按照顺序层叠起来

例:

<?xml version="1.0" encoding="UTF-8"?>    
 <layer-list    
   xmlns:android="http://schemas.android.com/apk/res/android">   
    <!--图片1-->  
     <item android:id="@+id/user_faceback_drawable"  
           android:drawable="@drawable/faceback" />    
    <!--图片2-->  
     <item android:id="@+id/user_face_drawable"   
           android:drawable="@drawable/h001"     
           android:left="10.0dip"   
           android:top="18.0dip"   
           android:right="25.0dip"   
           android:bottom="35.0dip" />    
 </layer-list>   
<!--2个图片的叠加-->  


 

 

以上三个标签可以揉合到一块儿来使用,所要实现的效果就是上面三种简介的说明

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值