Android的Drawable 发表于 2018-03-09 | 评论数: 本文字数: 4.3k | 阅读时长 ≈ 4 分钟 shape1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:innerRadius="5dp" android:shape="ring" android:thicknessRatio="9" android:useLevel="false"> <!--shape 形状 rectangle 矩形 ———————————————————————————————————————— oval 椭圆 ———————————————————————————————————————— line 线 需要设置 stroke 描边 才能显示 ———————————————————————————————————————— ring 圆环 需要设置 stroke 描边 才能显示 android:useLevel="false" 一般为false 圆环内半径 android:innerRadius圆环内半径 android:innerRadiusRatio 以环的宽度比率来表示内环的半径 默认为3,表示内环半径为环的宽度除以3 环的厚度 android:thickness android:thicknessRatio 浮点型,以环的宽度比率来表示环的厚度,默认为9,表示环的厚度为环的宽度除以9, --><!--————————————————————————————————————————————————————————————————————————————————————--> <corners android:radius="10dp" /> <!--四个角的角度 只能用于矩形--> <solid android:color="@color/colorPrimaryDark"/><!--填充的颜色--> <padding android:bottom="10dp" /><!--内容与形状边界的内间距--> <size android:width="5dp" android:height="5dp"/><!--形状的大小 作为view背景指定这个是没有用的--><!--——————————————————————————————————————————————————————————————————————————--> <stroke android:color="@color/colorPrimary" android:width="2dp" /> <!--stroke 描边 android:color 描边颜色 android:width 描边宽度 android:dashWidth 虚线的每一节长度 android:dashGap 虚线的每一节的距离--><!--——————————————————————————————————————————————————————————————————————————--> <gradient android:angle="45" android:centerColor="@color/colorPrimaryDark" android:endColor="@color/colorAccent" android:startColor="@color/colorPrimary" android:type="sweep" android:useLevel="false" /> <!--gradient 渐变 渐变开始 中间 结束的颜色 android:startColor android:centerColor android:endColor —————————————————————————————————————————————————————— android:useLevel 如果为true,则可在LevelListDrawable中使用 android:type 渐变类型 —————————————————————————————————————————————————————— 线性渐变 linear 默认渐变 android:angle 必须是45的倍数,0表示从左到右,90表示从下到上 —————————————————————————————————————————————————————— 放射渐变 radial android:gradientRadius 渐变半径 android:centerX 渐变中心的相对X坐标,在0.0到1.0之间,默认为0.5,表示在正中间 android:centerY 渐变中心的相对Y坐标,在0.0到1.0之间,默认为0.5,表示在正中间 ——————————————————————————————————————————————————————— 扫描渐变 sweep --></shape> layer-list1234567891011121314151617<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle"> <solid android:color="@color/colorPrimary" /> </shape> </item> <item> <shape android:shape="oval"> <solid android:color="@color/colorAccent" /> </shape> </item></layer-list> selector12345678910111213141516<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/layout_list" android:state_pressed="true"/> <item android:drawable="@drawable/shape" android:state_pressed="false"/> <!-- 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及以上才支持 --></selector>