概述
有些时候需要对一些控件的样式进行自定义,但是控件自带的属性修改的效果并不理想,这就需要我们自定义一些样式去修改控件样式,下面介绍自定义样式的方法。
以Button为例,我们可以修改Button的形状,颜色,圆角,甚至是渐变色,下面一一介绍。
首先,在drawable资源文件夹里新建一个style.xml的资源文件,res/drawable右键/new/Drawable resource file/命名为style/ok,即可。
下面我们看一下selector下面的item的各个属性:
属性 解释 android:color 颜色值 android:state_pressed 是否可以触摸 android:state_focused 是否能获取焦点 android:state_hovered 鼠标(指针)移动到该位置时是否触发事件 android:state_checkable “true”表示可勾选状态时使用;“false”表示非可 勾选状态使用、(只对能切换可勾选—非可勾选的构件有用 android:state_checked “true”表示已经被勾选状态时;“false”表示没有被勾选状态使用、(只对能切换可勾选—非可勾选的构件有用 android:state_first android:state_middle android:state_last android:state_activated -true 被激活时显示图片 ;false未激活时图片 android:state_active 被激活的条件,true为可以被激活,false是不可以被激活 android:state_selected 是否被选择状态 android:drawable 如果引用的话,selector必须是一个@drawable引用,代码中也必须是R.drawable android:state_window_focused 是否窗口聚焦 android:state_accelerated 硬件加速为true的图片 android:state_enabled 是否可用,不可用状态则不可对其操作 android:state_single true 只有一个元素显示图片 android:state_drag_can_accept true 能够drop 或者 drag 时图片
下面代码可以用于Button的点击效果样式的改变
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 当前窗口失去焦点时 -->
<item android:color="@android:color/black" android:state_window_focused="false" />
<!-- 不可用时 -->
<item android:color="@android:color/background_light" android:state_enabled="false" />
<!-- 按压时 -->
<item android:color="@android:color/holo_blue_light" android:state_pressed="true" />
<!-- 被选中时 -->
<item android:color="@android:color/holo_green_dark" android:state_selected="true" />
<!-- 被激活时 -->
<item android:color="@android:color/holo_green_light" android:state_activated="true" />
<!-- 默认时 -->
<item android:color="@android:color/white" />
</selector>
shape的属性
android:shape=[“rectangle” | “oval” | “line” | “ring”]
shape的形状,默认为矩形,可以设置为矩形(rectangle)、椭圆形(oval)、线性形状(line)、环形(ring)
下面的属性只有在android:shape=”ring”时可用:android:innerRadius 尺寸,内环的半径。
android:innerRadiusRatio 浮点型,以环的宽度比率来表示内环的, 例如,如果android:innerRadiusRatio,表示内环半径等于环的宽度除以5,这个值是可以被覆盖的,默认为9.
android:thickness 尺寸,环的厚度
android:thicknessRatio 浮点型,以环的宽度比率来表示环的厚度,例如,如果android:thicknessRatio=”2”,
那么环的厚度就等于环的宽度除以2。这个值是可以被 android:thickness覆盖的,默认值是3.android:useLevel boolean值,如果当做是LevelListDrawable使用时值为true,否则为false.
corners 圆角设置
- android:radius 整型 半径
- android:topLeftRadius 整型 左上角半径
- android:topRightRadius 整型 右上角半径
- android:bottomLeftRadius 整型 左下角半径
- android:bottomRightRadius 整型 右下角
gradient 渐变色
android:startColor 颜色值 起始颜色
android:endColor 颜色值 结束颜色
android:centerColor 整型 渐变中间颜色,即开始颜色与结束颜色之间的颜色
android:angle 整型 渐变角度(PS:当angle=0时,渐变色是从左向右。 然后逆时针方向转,当angle=90时为从下往上。angle必须为45的整数倍)
android:type [“linear” | “radial” | “sweep”] 渐变类型(取值:linear、radial、sweep)
linear 线性渐变,这是默认设置
radial 放射性渐变,以开始色为中心。
sweep 扫描线式的渐变。
android:useLevel [“true” | “false”] 如果要使用LevelListDrawable对象,就要设置为true。设置为true无渐变。false有渐变色
android:gradientRadius 整型 渐变色半径.当 android:type=”radial” 时才使用。单独使用 android:type=”radial”会报错。
android:centerX 整型 渐变中心X点坐标的相对位置
android:centerY 整型 渐变中心Y点坐标的相对位置
padding 内边距,即内容与边的距离
- android:left 整型 左内边距
- android:top 整型 上内边距
- android:right 整型 右内边距
- android:bottom 整型 下内边距
size 大小
- android:width 整型 宽度
- android:height 整型 高度
solid 填充
- android:color 颜色值 填充颜色
stroke 描边
android:width 整型 描边的宽度
android:color 颜色值 描边的颜色
android:dashWidth 整型 表示描边的样式是虚线的宽度, 值为0时,表示为实线。值大于0则为虚线。
android:dashGap 整型 表示描边为虚线时,虚线之间的间隔 即“ - - - - ”
简单代码示例
<shape shape="要绘制的形状" >
<!-- 圆角 -->
<corners
android:radius="9dp"
android:topLeftRadius="2dp"
android:topRightRadius="2dp"
android:bottomLeftRadius="2dp"
android:bottomRightRadius="2dp"/><!-- 设置圆角半径 -->
<!-- 渐变 -->
<gradient
android:startColor="@android:color/white"
android:centerColor="@android:color/black"
android:endColor="@android:color/black"
android:useLevel="true"
android:angle="45"
android:type="radial"
android:centerX="0"
android:centerY="0"
android:gradientRadius="90"/>
<!-- 间隔 -->
<padding
android:left="2dp"
android:top="2dp"
android:right="2dp"
android:bottom="2dp"/><!-- 各方向的间隔 -->
<!-- 大小 -->
<size
android:width="50dp"
android:height="50dp"/><!-- 宽度和高度 -->
<!-- 填充 -->
<solid
android:color="@android:color/white"/><!-- 填充的颜色 -->
<!-- 描边 -->
<stroke
android:width="2dp"
android:color="@android:color/black"
android:dashWidth="1dp"
android:dashGap="2dp"/>
</shape>
- 有时候会使用多个item去绘制一种效果,比如Button的自定义阴影效果
下面看一下代码示例,这个就不多说了
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<layer-list>
<!-- 相当于padding -->
<item android:left="4dp" android:top="4dp">
<shape>
<solid android:color="#ff58bb52" />
<corners android:radius="30dip"/>
</shape>
</item>
</layer-list>
</item>
<item>
<layer-list>
<!-- SHADOW LAYER -->
<item android:left="4dp" android:top="4dp">
<shape>
<solid android:color="#66000000" />
<corners android:radius="30dip"/>
</shape>
</item>
<!-- CONTENT LAYER -->
<!-- 相当于padding -->
<item android:bottom="4dp" android:right="4dp">
<shape>
<solid android:color="#ff58bb52" />
<corners android:radius="30dip"/>
</shape>
</item>
</layer-list>
</item>
</selector>
感兴趣的朋友可以试一试,自定义阴影比较麻烦,而且效果不是特别好,简单的阴影效果实现可以试试。
先写到这里,累了歇一会,以后再对这篇博客进行扩展
最后
以上就是魁梧学姐为你收集整理的自定义Selector篇,改变样式,绘制图案和背景的全部内容,希望文章能够帮你解决自定义Selector篇,改变样式,绘制图案和背景所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复