一、Shape的用法shape用于设定形状,可以在selector,layout等里面使用,有6个子标签,各属性如下:

  填充:设置填充的颜色

  间隔:设置四个方向上的间隔

  大小:设置大小

  圆角:同时设置五个属性,则Radius属性无效

    android:Radius="20dp" 设置四个角的半径

    android:topLeftRadius="20dp" 设置左上角的半径

    android:topRightRadius="20dp" 设置右上角的半径

    android:bottomLeftRadius="20dp" 设置右下角的半径

    android:bottomRightRadius="20dp" 设置左下角的半径

  描边:dashWidth和dashGap属性,只要其中一个设置为0dp,则边框为实现边框

    android:width="20dp" 设置边边的宽度

    android:color="@android:color/black" 设置边边的颜色

    android:dashWidth="2dp" 设置虚线的宽度

    android:dashGap="20dp" 设置虚线的间隔宽度

  渐变:当设置填充颜色后,无渐变效果。angle的值必须是45的倍数(包括0),仅在type="linear"有效,不然会报错。android:useLevel 这个属性不知道有什么用。

具体写法如下

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" >        <!-- 圆角 -->    <corners        android:radius="9dp"        android:topLeftRadius="2dp"        android:topRightRadius="2dp"        android:bottomLeftRadius="2dp"        android:bottomRightRadius="2dp"/><!-- 设置圆角半径 -->        <!-- 渐变 -->    <gradient        android:startColor="@android:color/white"        android:centerColor="@android:color/black"        android:endColor="@android:color/black"        android:useLevel="true"        android:angle="45"        android:type="radial"        android:centerX="0"        android:centerY="0"        android:gradientRadius="90"/>        <!-- 间隔 -->    <padding        android:left="2dp"        android:top="2dp"        android:right="2dp"        android:bottom="2dp"/><!-- 各方向的间隔 -->        <!-- 大小 -->    <size        android:width="50dp"        android:height="50dp"/><!-- 宽度和高度 -->        <!-- 填充 -->    <solid        android:color="@android:color/white"/><!-- 填充的颜色 -->        <!-- 描边 -->    <stroke        android:width="2dp"        android:color="@android:color/black"        android:dashWidth="1dp"        android:dashGap="2dp"/>    </shape>
View Code

二、Selector的用法

  先看一下listview中的状态:
  把下面的XML文件保存成你自己命名的.xml文件(比如list_item_bg.xml),在系统使用时根据ListView中的列表项的状态来使用相应的背景图片。
  drawable/list_item_bg.xml

<?xml version="1.0" encoding="utf-8" ?>    <selector xmlns:android="http://schemas.android.com/apk/res/android">        <!-- 默认时的背景图片-->        <item android:drawable="@drawable/pic1" />        <!-- 没有焦点时的背景图片-->        <item android:state_window_focused="false" android:drawable="@drawable/pic1" />        <!-- 非触摸模式下获得焦点并单击时的背景图片-->        <item android:state_focused="true" android:state_pressed="true"            android:drawable="@drawable/pic2" />        <!-- 触摸模式下单击时的背景图片-->        <item android:state_focused="false" android:state_pressed="true"            android:drawable="@drawable/pic3" />        <!--选中时的图片背景-->        <item android:state_selected="true" android:drawable="@drawable/pic4" />        <!--获得焦点时的图片背景-->        <item android:state_focused="true" android:drawable="@drawable/pic5" />    </selector>

  使用些xml文件:第一种是在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);同样的效果。

  但是这样会出现列表有时候为黑的情况,需要加上:android:cacheColorHint="@android:color/transparent"使其透明。

  其次再来看看Button的一些背景效果:

   android:state_selected是选中

  android:state_focused是获得焦点

  android:state_pressed是点击

  android:state_enabled是设置是否响应事件,指所有事件

  根据这些状态同样可以设置button的selector效果。也可以设置selector改变button中的文字状态。

  以下就是配置button中的文字效果:

drawable/button_font.xml

 <?xml version="1.0" encoding="utf-8"?>    <selector xmlns:android="http://schemas.android.com/apk/res/android">        <item android:state_selected="true" android:color="#FFF" />        <item android:state_focused="true" android:color="#FFF" />        <item android:state_pressed="true" android:color="#FFF" />        <item android:color="#000" />    </selector>

  Button还可以实现更复杂的效果,例如渐变等等。

  drawable/button_color.xml

<?xml version="1.0" encoding="utf-8"?>    <selector xmlns:android="http://schemas.android.com/apk/res/android">        <item android:state_pressed="true">            <!-- 定义当button 处于pressed 状态时的形态。-->            <shape>                <gradient android:startColor="#8600ff" />                <stroke android:width="2dp" android:color="#000000" />                <corners android:radius="5dp" />                <padding android:left="10dp" android:top="10dp"                    android:bottom="10dp" android:right="10dp" />            </shape>        </item>        <item android:state_focused="true">            <!-- 定义当button获得focus时的形态-->            <shape>                <gradient android:startColor="#eac100" />                <stroke android:width="2dp" android:color="#333333" color="#ffffff" />                <corners android:radius="8dp" />                <padding android:left="10dp" android:top="10dp"                    android:bottom="10dp" android:right="10dp" />            </shape>        </item>    </selector>
View Code

  最后,需要在包含button的xml文件里添加背景。假如是main.xml 文件,我们需要在<Button />里加一项。

android:backgroud="@drawable/button_color"

更多相关文章

  1. Listview中item与button类控件获取焦点问题
  2. 【Android】输入设备配置文件(.idc文件)
  3. 图片显示上下有空白的解决办法
  4. Android(安卓)WebView显示HTML时右边有空白
  5. [Android实例] android实现顶级圆角弹窗(个人)
  6. Android之设置EditText输入类型(setInputType()方法和android:in
  7. Android(安卓)快速开发系列 ORMLite 框架最佳实践
  8. Your content must have a ListView whose id attribute is 'and
  9. Android(安卓)自定义EditText, 增加设置右边取消按钮的属性

随机推荐

  1. Android使用binder访问service的方式
  2. Android(安卓)Camera2 Mediacodec编码
  3. android 调节媒体音量
  4. android ScrollView嵌套RecyclerView只显
  5. Android(安卓)平板电脑的判断方法
  6. Android(安卓)手机端与服务端POST数据交
  7. Android(安卓)RectF类的构造函数参数说明
  8. Android(安卓)Drawable绘图
  9. Android(安卓)SQLite 抽象出CRUD操作工具
  10. Android(安卓)- View的绘制流程一(measure