shape 可以实现一些你想要的效果, 比如有时候 你在一个 button 获得焦点,按下 ,时要改变图片 以让客户有更好的体验感觉。
shape 就可以改变这些 控件的一些 属性, 可以说 让你在一个小项目中实现 获得焦点,按下 统一的效果和 风格吧, 而且这样超级方便呢。
在 你的 drawable文件夹下面 建立1个xml文件,比如 selector.xml
shape里面有这么几个属性,其实很简单:
1.Shape
简介
作用:XML中定义的几何形状
位置:res/drawable/文件的名称.xml
使用的方法:
Java代码中:R.drawable.文件的名称
XML中:Android:background="@drawable/文件的名称"
属性:
<shape> Android:shape=["rectangle" | "oval" | "line" | "ring"]
其中rectagle矩形,oval椭圆,line水平直线,ring环形
2.Selector
简介
根据不同的选定状态来定义不同的现实效果
分为四大属性:
android:state_selected是选中
android:state_focused是获得焦点
android:state_pressed是点击
android:state_enabled是设置是否响应事件,指所有事件
android:state_window_focused默认时的背景图片
引用位置:res/drawable/文件的名称.xml
使用的方法:
Java代码中:R.drawable.文件的名称
XML中:Android:background="@drawable/文件的名称"
<shape> <solid android:color=""/> 实心属性: 什么颜色 <gradient android:startColor="" 渐变属性: 1.开始颜色 android:endColor="" 2.结束颜色 android:angle="90" /> 3.angle: 渐变的角度 必须为45度的倍数 //渐变平常默认是 线性渐变 android:type="linear", // 想要变成 径向渐变 android:type="radial",径向渐变需要指定半径android:gradientRadius="30"。 <stroke 描边属性: android:width="3dp" 1.描边的宽度 android:dashWidth="6dp" 2.表示横线的宽度 android:dashGap="3dp" 3.表示隔开的距离 android:color="" /> 4.描边的颜色 <corners 圆角属性: android:topRightRadius="20dp" 右上角 android:bottomLeftRadius="20dp" 右下角 android:topLeftRadius="1dp" 左上角 android:bottomRightRadius="0dp" 左下角 /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> <selector <item android:state_pressed="true" > <shape> </shape> </item> <item android:state_focused="true" > <shape> </shape> </item> </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="" android:left="0dip" android:top="0dip" android:right="30dip" android:bottom="30dip" /> </layer-list> <!--2个图片的叠加-->