android 中 shape 及 select详解

资源

selector

重点内容
默认的item必须放到最后

属性

android:state_enabled:  //设置触摸或点击事件是否可用状态,一般只在false时设置该属性,表示不可用状态

android:state_pressed:  //设置是否按压状态,一般在true时设置该属性,表示已按压状态,默认为false

android:state_selected:  //设置是否选中状态,true表示已选中,false表示未选中

android:state_checked:  //设置是否勾选状态,主要用于CheckBox和RadioButton,true表示已被勾选,false表示未被勾选

android:state_checkable:  //设置勾选是否可用状态,类似state_enabled,只是state_enabled会影响触摸或点击事件,而state_checkable影响勾选事件

android:state_focused:  //设置是否获得焦点状态,true表示获得焦点,默认为false,表示未获得焦点

android:state_window_focused:  //设置当前窗口是否获得焦点状态,true表示获得焦点,false表示未获得焦点,例如拉下通知栏或弹出对话框时,当前界面就会失去焦点;另外,ListView的ListItem获得焦点时也会触发true状态,可以理解为当前窗口就是ListItem本身

android:state_activated:  //设置是否被激活状态,true表示被激活,false表示未激活,API Level 11及以上才支持,可通过代码调用控件的setActivated(boolean)方法设置是否激活该控件

android:state_hovered:  //设置是否鼠标在上面滑动的状态,true表示鼠标在上面滑动,默认为false,API Level 14及以上才支持

常用设置
一般设置,如下四个属性就能满足大部分场景。(一般,第一和最后两个属性就够,部分机型不显示,加上另外两个才显示)

<item android:drawable="@drawable/solid_stroke_pressed" android:state_focused="true" />
<item android:drawable="@drawable/solid_stroke_pressed" android:state_selected="true" />
<item android:drawable="@drawable/solid_stroke_pressed" android:state_pressed="true" />
<item android:drawable="@drawable/solid_stroke_normal" />

shape

重点内容

根属性

android:shape="rectangle|line|oval|ring"  //分别为矩形、线、椭圆、环。默认为矩形rectangle
android:dither="false|true"  //将在位图的像素配置与屏幕不同时(例如:ARGB 8888 位图和 RGB 565 屏幕)启用位图的抖动;值为“false”时则停用抖动。默认值为 true。
android:innerRadius="integer"  // shape为ring时可用,内环半径
android:innerRadiusRatio="float"  // shape为ring时可用,内环的厚度比,即环的宽度比表示内环半径,默认为3,可被innerRadius值覆盖
android:thickness="integer"  // shape为ring时可用,环的厚度
android:thicknessRatio="float"  // shape为ring时可用,环的厚度比,即环的宽度比表示环的厚度,默认为9,可被thickness值覆盖
android:tint="color"  // 给shape着色
android:tintMode="src_in|src_atop|src_over|add|multiply|screen"  // 着色类型
android:useLevel="false|true"  // 较少用,一般设为false,否则图形不显示。为true时可在LevelListDrawable使用
android:visible="false|true"  //是否可见

corners(圆角)

<corners
        android:radius="3dp"  //圆角度数
        android:topLeftRadius="3dp"  //左上圆角度数
        android:topRightRadius="3dp"  //右上圆角度数
        android:bottomLeftRadius="3dp"  //左下圆角度数
        android:bottomRightRadius="3dp"  //右上圆角度数
        />

gradient(渐变)

android:type="linear|radial|sweep"  //线性|放射性|扫描性

android:angle="integer"  //渐变颜色的角度。45的倍数,0度时从左往右渐变,角度方向逆时针。type为linear时有效。

android:startColor="color"  //开始颜色
android:centerColor="color"  //中间颜色
android:endColor="color"  //结束颜色

android:centerX="float"  //设置渐变中心的X坐标,取值区间[0,1],type不为linear

android:centerY="float"  //设置渐变中心的Y坐标,取值区间[0,1],type不为linear

android:gradientRadius="integer"  //渐变色半径,type为radial时必须配

android:useLevel="true|false"  // 较少用,一般设为false,否则图形不显示。为true时可在LevelListDrawable使用

stroke

android:color="color"       // 描边的颜色
android:width="integer"     // 描边的宽度
android:dashGap="integer"   // 虚线间隔
android:dashWidth="integer" // 虚线宽度

solid(填充)

android:color="color"     // shape的填充色

size(大小)

android:width="300dp"
android:height="100dp" 

padding(边距)

常用属性

参考文献

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值