想必大家对shape和secletor一定不陌生,话不多说,首先对shape的主要属性的介绍:
<!--设置圆角半径 同时设置五个属性,则Radius属性无效-->
<corners
android:bottomLeftRadius="10dp"
android:bottomRightRadius="10dp"
android:radius="10dp"
android:topLeftRadius="10dp"
android:topRightRadius="10dp" />
<!--填充颜色-->
<solid android:color="#ffffff" />
<!--设置大小-->
<size
android:width="100dp"
android:height="100dp" />
<!--设置四个方向上的间隔-->
<padding
android:bottom="10dp"
android:left="10dp"
android:right="10dp"
android:top="10dp" />
<!--dashWidth和dashGap属性,只要其中一个设置为0dp,则边框为实现边框-->
<stroke
android:width="1dp"
android:color="#FF4081"
android:dashGap="1dp"
android:dashWidth="1dp" />
</shape>
android:type=["linear" | "radial" | "sweep"] //共有3中渐变类型,线性渐变(默认)/放射渐变/扫描式渐变
android:angle="integer" //渐变角度,必须为45的倍数,0为从左到右,90为从上到下
android:centerX="float" //渐变中心X的相当位置,范围为0~1
android:centerY="float" //渐变中心Y的相当位置,范围为0~1
android:startColor="color" //渐变开始点的颜色
android:centerColor="color" //渐变中间点的颜色,在开始与结束点之间
android:endColor="color" //渐变结束点的颜色
android:gradientRadius="float" //渐变的半径,只有当渐变类型为radial时才能使用
<gradient
android:angle="45"
android:centerColor="#FF4081"
android:endColor="#000000"
android:startColor="#ffffff"
android:type="linear"/>
<gradient
android:centerColor="#FF4081"
android:endColor="#000000"
android:gradientRadius="100dp"
android:startColor="#ffffff"
android:type="radial" />
<gradient
android:centerColor="#FF4081"
android:endColor="#000000"
android:startColor="#ffffff"
android:type="sweep" />
secletor的主要属性的介绍:
<!-- 当前窗口失去焦点时 -->
<item android:drawable="#FF4081" android:state_window_focused="false" />
<!-- 不可用时 当控件中设置为 android:enabled="false" -->
<item android:drawable="@color/colorHong" android:state_enabled="false" />
<!-- 按压时 -->
<item android:drawable="@color/colorHuang" android:state_pressed="true" />
通过EditText来证明state_focused属性
<item android:state_focused="true" android:drawable="@color/colorBlue" />
<item android:drawable="@color/colorBlack" />
通过CheckBox来证明state_checked属性
<item android:state_checked="true" android:drawable="@color/colorBlue"/>
<item android:drawable="@color/colorBlack"/>
通过ListView 来证明state_selector属性
<item android:state_selected="true" android:drawable="@color/colorBlue"/>
<item android:drawable="@color/colorBlack"/>
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
view.setSelected(true);//必须加这个
Toast.makeText(DrawableActivity.this,list.get(position),Toast.LENGTH_LONG).show();
}
});
1.Secletor中的state_pressed属性与Shape的配合使用
<item android:state_pressed="true">
<shape>
<corners android:radius="10dp" />
<size android:width="100dp" android:height="100dp" />
<solid android:color="#ffffff" />
</shape>
</item>
<item android:state_pressed="false">
<shape>
<corners android:radius="10dp" />
<size android:width="100dp" android:height="100dp" />
<solid android:color="@color/colorAccent" />
</shape>
</item>