布局XML_Selector与Shape的基本用法

前端之家收集整理的这篇文章主要介绍了布局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. @H_404_54@ android:state_selected=["true"|"false"]选中
  5. android:state_active=["true"|"false"]
  6. @H_404_54@ android:state_checkable=["true"|"false"]是否可选择
  7. android:state_checked=["true"|"false"]选择
  8. @H_404_54@ android:state_enabled=["true"|"false"]是否响应事件
  9. android:state_window_focused=["true"|"false"]

2.Shape


solid:实心,就是填充

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

gradient:渐变

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

stroke:描边

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

corners:圆角

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

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


padding:间隔

3.用法


第一种是在listview中配置:

android:listSelector = "@drawable/list_item_bg"

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

@H_230_404@

android:background = "@drawable/list_item_bg"

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


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

4.例:list_item_bg.xml

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

猜你在找的XML相关文章