加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

布局XML_Selector与Shape的基本用法

发布时间:2020-12-16 09:04:06 所属栏目:百科 来源:网络整理
导读:情景再现:UI按照720P切图,缩放成.9图片缩放后边角会出现虚化~特此要用代码解决~ 1.Selector drawable的item中可以有以下属性: [html] view plain copy print ? android:drawable = "@drawable/drawable_resource" android:state_pressed =["true"|"false"

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

1.Selector


drawable的item中可以有以下属性:

[html] view plain copy print ?
  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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读