搜索
您的当前位置:首页正文

12-28 Andorid中shape和selector的使用。

来源:二三娱乐

1.Shape

简介

作用:XML中定义的几何形状
位置:res/drawable/文件的名称.xml

使用的方法:

  1. Java代码中:R.drawable.文件的名称
    XML中:Android:background="@drawable/文件的名称"

Shape常用标签

属性:

  • <shape> Android:shape=["rectangle" | "oval" | "line" | "ring"]
    其中rectagle矩形,oval椭圆,line水平直线,ring环形

shape中子节点的常用属性:

  • Android:startColor 起始颜色

  • Android:endColor 结束颜色

  • Android:angle 渐变角度,0从上到下,90表示从左到右,数值为45的整数倍默认为0;

  • Android:type 渐变的样式 liner线性渐变 radial环形渐变 sweep

<solid > 填充

  • Android:color 填充的颜色

<stroke > 描边

  • Android:width 描边的宽度
  • Android:color 描边的颜色
  • Android:dashWidth 表示'-'横线的宽度
  • Android:dashGap 表示'-'横线之间的距离

<corners > 圆角

  • Android:radius 圆角的半径 值越大角越圆
  • Android:topRightRadius 右上圆角半径
  • Android:bottomLeftRadius 右下圆角角半径
  • Android:topLeftRadius 左上圆角半径
  • Android:bottomRightRadius 左下圆角半径

<corners>间隔

  • Android:bottom = "10dp"
  • Android:left = "10dp"
  • Android:right = "10dp"
  • Android:top = "10dp"

渐变

<gradient  
    android:endColor="#FFFFFF"  
    android:gradientRadius="50"  
    android:startColor="#ff8c00"  
    android:type="radial" />

引言:选择器,在Android中常常用来做组件的背景。省去了代码控制实现组件再不同状态下的更换。
定义:状态列表 分为两种:color-Selector和drawable-Selector。


color-Selector

<?xml version="1.0" encoding="utf-8"?>
<selector  >
  <item
  android:color="hex_color"   //颜色值,   #RGB,$ARGB,#RRGGBB,#AARRGGBB
android:state_pressed=["true" | "false"]//是否触摸 
android:state_focused=["true" | "false"]//是否获得焦点
android:state_selected=["true" | "false"]//是否被状态
android:state_checkable=["true" | "false"]//是否可选
android:state_checked=["true" | "false"]//是否选中
android:state_enabled=["true" | "false"]//是否可用
android:state_window_focused=["true" | "false"] />//是否窗口聚焦
</selector>

示例:

<?xml version="1.0" encoding="utf-8"?>
<selector 
<item android:state_pressed="true"
 android:color="#ffff0000"/> <!-- pressed -->
<item android:state_focused="true"
 android:color="#ff0000ff"/> <!-- focused -->
<item android:color="#ff000000"/> <!-- default -->

drawable-selector

<?xml version="1.0" encoding="utf-8"?>
<selector 
    android:constantSize=["true" | "false"]//drawable的大小是否当中状态变化,true表示是变化,false表示不变换,默认为false 
    android:dither=["true" | "false"]//当位图与屏幕的像素配置不一样时(例如,一个ARGB为8888的位图与RGB为555的屏幕)会自行递色(dither)。设置为false时不可递色。默认true 
    android:variablePadding=["true" | "false"] >//内边距是否变化,默认false 
    <item 
        android:drawable="@[package:]drawable/drawable_resource"//图片资源 
        android:state_pressed=["true" | "false"]//是否触摸 
        android:state_focused=["true" | "false"]//是否获取到焦点 
        android:state_enabled=["true" | "false"]//是否可用 
        android:state_activated=["true" | "false"]//是否激活 
        android:state_window_focused=["true" | "false"] />//所在窗口是否获取焦点
        android:state_hovered=["true" | "false"]//光标是否经过 
        android:state_selected=["true" | "false"]//是否选中 
        android:state_checkable=["true" | "false"]//是否可勾选 
        android:state_checked=["true" | "false"] />//是否勾选 
</selector>

示例:

<?xml version="1.0" encoding="utf-8"?>
<selector 
    <item android:state_selected="true" android:drawable="@drawable/button_bg_press" /> 
    <item android:state_focused="true" android:drawable="@drawable/button_bg_press" /> 
    <item android:state_pressed="true" android:drawable="@drawable/button_bg_press" /> 
    <item android:drawable="@drawable/button_bg_normol" />
</selector>

调用:

<Button 
    android:id="@+id/bt_about" style="@style/Button_style" 
    android:background="@drawable/button_selector" 
    android:layout_width="250dp" 
    android:layout_height="50dp" 
    android:layout_margin="5dp" 
    android:textColor="@color/test_color_selector" 
    android:text="@string/about" />
Top