可以这样说,
先来看一个例子:
通过xml文件实现自定义圆角镂空按钮,以及点击效果
1.在drawable中创建按钮背景selector器
circle_corner_button_selector.xml
2.分别定义不同选择操作下的效果
首先:circle_corner_button.xml文件
-
和circle_corner_button_pressed.xml文件
-
最后的按钮效果应该是这样的:
正常情况下:
点击后的样式:
简介
使用的方法:
属性:
其中rectagle矩形,oval椭圆,line水平直线,ring环形
Android:startColor
起始颜色
Android:endColor
结束颜色
Android:angle
渐变角度,0从左到右,90表示从下到上,数值为45的整数倍,默认为0;
Android:type
渐变的样式 liner线性渐变 radial环形渐变 sweep
Android:color
填充的颜色
Android:width
描边的宽度
Android:color
描边的颜色
Android:dashWidth
表示'-'横线的宽度
Android:dashGap
表示'-'横线之间的距离
Android:radius
圆角的半径 值越大角越圆
Android:topRightRadius
右上圆角半径
Android:bottomLeftRadius
右下圆角角半径
Android:topLeftRadius
左上圆角半径
Android:bottomRightRadius
左下圆角半径
android:bottom="1.0dip"
底部填充
android:left="1.0dip"
左边填充
android:right="1.0dip"
右边填充
android:top="0.0dip"
上面填充
简介
使用的方法:
点击查看 安卓官方开发指南中关于layerlsit的说明
(1). layer-list 是啥?
简单理解,layer 是层,list 是列表,那么 layer-list 就是层列表的意思。但是,是什么层列表呢?? 其实 layer-list 是用来创建 LayerDrawable 的,LayerDrawable 是 DrawableResource 的一种, 所以,layer-list 创建出来的是 图层列表,也就是一个drawable 图形。
(2). layer-list 有啥作用?
上面已经说过,layer-list 是用来创建 图层列表的,通过它能创建出一些特殊的 drawable, 比如:
layer-list 的大致原理类似 RelativeLayout(或者FrameLayout) ,也是一层层的叠加 ,后添加的会覆盖先添加的。在 layer-list 中可以通过 控制后添加图层距离最底部图层的 左上右下的四个边距等属性,得到不同的显示效果。
因 layer-list 创建出来的也是 drawable 资源,所以,同 shape selector 一样,都是定义在 res 中的 drawable 文件夹中,也是一个 xml 文件。使用的时候,同shape selector , 布局文件中使用 @drawable/ xxx 引用, 代码中使用 R.drawable.xxx 引用。
layer-list 中不同的图层使用 item 节点来定义。
(1). 效果1 :单一边线
效果图:
图中,TextView 只有一个顶部边线
具体代码:
在 res 目录中的 drawable 目录下,创建名称为 singleline.xml 的xml 文件,然后编辑 layer-list 的详细代码,如下:
-
-
(2). 效果2 :双边线
效果图:
图中,TextView 具有上下边线
具体代码:
-
-
(3). 效果3 :阴影
效果图:
具体代码:
-
-
(4). 效果4 : 图片层叠
图片层叠的时候,有两种效果,一种是缩放后层叠,一种是不缩放的层叠。默认是缩放效果。具体效果以及实现代码如下:
-
-
-
或者也可以使用如下代码,实现缩放的叠加图:
-
-
-
效果图 2):不带缩放效果的
-
-
-
(5). 效果5 :叠加旋转
具体代码:
-
-
-
旋转的时候,只需要给出 起始的角度( fromdegress )即可。
(1).实现选择器的效果
主要使用组件:RadioGroup Selector layer-list
定义 selector 选择器
selector 的 item 节点中,直接嵌套 layer-list
当然也可以先写好layer-list ,然后再去引用
-
-
-
-
-
-
-
-
-
-
-
-
就像上面这个图形很简单,左右两边各一个Button,如果用单一的drawable中的shape绘制,就是左边背景是白色边线灰色背景左边两个圆角,右边背景是白色边线蓝色背景右边两个圆角,出来的实际效果是下图:
中间明显一条白线明显比较粗,这是因为左右两边作为背景的drawable图都有边线.这时候如果用layer-list,就可以将其中一侧(左边或右边)的背景定义为某一边无边线的样式:
实现起来也很简单,第一层item正常绘制,第二层绘制一个不带边框的同背景色的形状,如果某一边是无边界线,那么除了这个边,其它边都给一个偏移量(item节点里面的bottom等),偏移量取决于第一层的边线宽度
-
-
最典型的就是同心圆:
-
-
最近自己写了一个小程序,大家可以关注一下,附带源码:
搬砖之余看个电影放松,扫码关注,最新,最全的各种影视资源,省去各种VIP,直接观看