布局XML_Selector与Shape的基本用法

情景再现:UI按照720P切图,缩放成.9图片缩放后边角会出现虚化~特此要用代码解决~

1.Selector


drawable的item中可以有以下属性

  1. android:drawable="@drawable/drawable_resource"
  2. android:state_pressed=["true"|"false"]点击
  3. android:state_focused=["true"|"false"]获得焦点
  4. android:state_selected=["true"|"false"]选中
  5. android:state_active=["true"|"false"]
  6. android:state_checkable=["true"|"false"]是否可选择
  7. android:state_checked=["true"|"false"]选择
  8. android:state_enabled=["true"|"false"]是否响应事件
  9. android:state_window_focused=["true"|"false"]

2.Shape


solid:实心,就是填充

android:color = "#000000" 指定填充的颜色

gradient:渐变

?
    android:startColor起始颜色
  1. android:endColor结束颜色
  2. android:angle渐变角度,必须为45的整数倍。
  3. 渐变模式:
  4. android:type="linear"认为线性渐变模式
  5. android:type="radial"径向渐变,需要指定半径
  6. android:gradienTradius="50"半径为50

stroke描边

?
    android:width="2dp"描边的宽度
  1. android:color描边的颜色
  2. 还可以把描边弄成虚线的形式,设置方式为:
  3. android:dashWidth="5dp"表示'-'这样一个横线的宽度
  4. android:dashGap="3dp"表示'-'之间隔开的距离

corners:圆角

?
    android:radius角的弧度,值越大角越圆
  1. 还可以把四个角设定成不同的角度:
  2. <corners
  3. android:topRighTradius="20dp"右上角
  4. android:bottomLefTradius="20dp"右下角
  5. android:topLefTradius="1dp"左上角
  6. android:bottomrighTradius="0dp"左下角
  7. />

这里有个地方需要注意,bottomLefTradius是右下角,而不是左下角,这个有点郁闷,不过不影响使用,记得别搞错了就行。


padding:间隔

3.用法


第一种是在listview中配置:

android:listSelector = "@drawable/list_item_bg"

第二种是在listview的item中添加属性


android:background = "@drawable/list_item_bg"

第三种是在Java代码中使用:


Drawable drawable = getResources().getDrawable(R.drawable.list_item_bg);
listView.setSelector(drawable);

4.例:list_item_bg.xml

?
    <?xmlversion="1.0"encoding="utf-8"?>
  1. <selectorxmlns:android="http://schemas.android.com/apk/res/android">
  2. <itemandroid:state_pressed="true">
  3. <shape>
  4. <!--渐变-->
  5. <gradient
  6. android:startColor="#ff8c00"
  7. android:endColor="#FFFFFF"
  8. android:type="radial"
  9. android:gradienTradius="50"/>
  10. <!--描边-->
  11. <stroke
  12. android:width="2dp"
  13. android:color="#dcdcdc"
  14. android:dashWidth="5dp"
  15. android:dashGap="3dp"/>
  16. <!--圆角-->
  17. android:radius="2dp"/>
  18. <padding
  19. android:left="10dp"
  20. android:top="10dp"
  21. android:right="10dp"
  22. android:bottom="10dp"/>
  23. </shape>
  24. </item>
  25. <itemandroid:state_focused="true">
  26. <shape>
  27. android:startColor="#ffc2b7"
  28. android:endColor="#ffc2b7"
  29. android:angle="270"/>
  30. android:color="#dcdcdc"/>
  31. <corners
  32. android:radius="2dp"/>
  33. <padding
  34. android:left="10dp"
  35. android:top="10dp"
  36. android:right="10dp"
  37. android:bottom="10dp"/>
  38. </shape>
  39. </item>
  40. <item>
  41. <solidandroid:color="#ff9d77"/>
  42. android:color="#fad3cf"/>
  43. android:topRighTradius="5dp"
  44. android:bottomLefTradius="5dp"
  45. android:topLefTradius="0dp"
  46. android:bottomrighTradius="0dp"/>
  47. </selector>

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念