shape和selector是Android UI设计中经常用到的,比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到shape和selector。可以这样说,shape和selector在美化控件中的作用是至关重要的。

1.Shape

简介

作用:XML中定义的几何形状

位置:res/drawable/文件的名称.xml

使用的方法:

Java代码中:R.drawable.文件的名称

XML中:Android:background="@drawable/文件的名称"

属性:

<shape>  Android:shape=["rectangle" | "oval" | "line" | "ring"]

其中rectagle矩形,oval椭圆,line水平直线,ring环形

<shape>中子节点的常用属性:

<gradient>  渐变

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 左下圆角半径

2.Selector

简介

位置:res/drawable/文件的名称.xml

使用的方法:

Java代码中:R.drawable.文件的名称

XML中:Android:background="@drawable/文件的名称"

<?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/pic_blue" 

   />     

<!-- 非触摸模式下获得焦点并单击时的背景图片 -->    

<item 

   Android:state_focused="true" 

   android:state_pressed="true"   

   android:drawable= "@drawable/pic_red" 

   />   

<!-- 触摸模式下单击时的背景图片-->    

<item 

   Android:state_focused="false" 

   Android:state_pressed="true"   

   Android:drawable="@drawable/pic_pink" 

   />    

<!--选中时的图片背景-->    

<item 

   Android:state_selected="true" 

   android:drawable="@drawable/pic_orange" 

   />     

<!--获得焦点时的图片背景-->    

<item 

   Android:state_focused="true" 

   Android:drawable="@drawable/pic_green" 

   />     

</selector> 

第一个例子:圆角的Button

第二个例子:shape+selector综合使用的例子 漂亮的ListView

selector.xml

<?xml version="1.0" encoding="utf-8"?> 

<selector xmlns:Android="http://schemas.android.com/apk/res/android"> 

    <item Android:state_selected="true"> 

        <shape> 

            <gradient Android:angle="270" android:endColor="#99BD4C" 

                android:startColor="#A5D245" /> 

            <size Android:height="60dp" android:width="320dp" /> 

            <corners android:radius="8dp" /> 

        </shape> 

    </item> 

    <item Android:state_pressed="true"> 

        <shape> 

            <gradient Android:angle="270" android:endColor="#99BD4C" 

                android:startColor="#A5D245"/> 

            <size Android:height="60dp" android:width="320dp" /> 

            <corners android:radius="8dp" /> 

        </shape> 

    </item> 

    <item> 

        <shape> 

            <gradient Android:angle="270" android:endColor="#A8C3B0" 

                android:startColor="#C6CFCE"  /> 

            <size Android:height="60dp" android:width="320dp" /> 

            <corners android:radius="8dp" /> 

        </shape> 

    </item> 

</selector> 

list_item.xml

<?xml version="1.0" encoding="utf-8"?> 

   <LinearLayout  xmlns:Android="http://schemas.android.com/apk/res/android" 

    android:orientation="horizontal"   

    Android:layout_width="fill_parent"    

    android:layout_height="wrap_content" 

    Android:background="@drawable/selector" 

    >                     

    <ImageView   

        Android:id="@+id/img"    

        Android:layout_width="wrap_content"   

        android:layout_height="wrap_content"              

        Android:layout_gravity="center_vertical" 

        android:layout_marginLeft="20dp"          

        />                            

        <TextView   

            Android:text="data"   

            android:id="@+id/title" 

            Android:layout_width="fill_parent"   

            android:layout_height="wrap_content"   

            Android:gravity="center_vertical"    

            android:layout_marginLeft="20dp"   

            Android:layout_marginTop="20dp"   

            android:textSize="14sp"                           

            Android:textStyle="bold" 

            android:textColor="@color/black"                          

            > 

        </TextView>           

</LinearLayout> 

main.xml

<?xml version="1.0" encoding="utf-8"?> 

    <LinearLayout xmlns:Android="http://schemas.android.com/apk/res/android" 

        android:orientation="vertical"   

        Android:layout_width="fill_parent"    

        android:layout_height="wrap_content" 

        Android:background="#253853" 

        >                                 

        <ListView   

          Android:id="@+id/list"   

          Android:layout_width="match_parent"   

          android:layout_height="match_parent" 

          Android:cacheColorHint="#00000000" 

          android:divider="#2A4562" 

          Android:dividerHeight="3px" 

          android:listSelector="#264365" 

          Android:drawSelectorOnTop="false"  

          > 

        </ListView>   

</LinearLayout> 

colors.xml

<?xml version="1.0" encoding="utf-8"?> 

<resources> 

    <color name="white">#FFFFFFFF</color> 

    <color name="transparency">#00000000</color> 

    <color name="title_bg">#1C86EE</color> 

    <color name="end_color">#A0cfef83</color> 

    <color name="black">#464646</color> 

</resources> 

MainActivity.xml

package com.lingdududu.customlist;  

import java.util.ArrayList;  

import java.util.HashMap;  

import xb.customlist.R;  

import Android.R.array;  

import android.app.Activity;  

import Android.os.Bundle;  

import android.widget.ArrayAdapter;  

import Android.widget.ListView;  

import android.widget.SimpleAdapter;  

public class MainActivity extends Activity {  

    ListView list;  

    String data[] = new String[]{  

            "China","UK","USA","Japan","German","Canada","ET","Narotu"    

    };  

    /** Called when the activity is first created. */ 

    @Override 

    public void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        setContentView(R.layout.main);  

        list =(ListView) findViewById(R.id.list);          

        SimpleAdapter adapter = new SimpleAdapter(this, getData(), R.layout.list_item,   

                new String[]{"title","img"}, new int[]{R.id.title,R.id.img});  

        list.setAdapter(adapter);          

    }  

    private ArrayList<HashMap<String, Object>> getData() {        

        ArrayList<HashMap<String, Object>> dlist = new ArrayList<HashMap<String,Object>>();  

        for(int i =0;i<data.length;i++){  

            HashMap<String, Object>map = new HashMap<String, Object>();           

            map.put("title", data[i]);  

            map.put("img", R.drawable.item_left2);  

            dlist.add(map);   

        }  

        return dlist;  

    }  

}

shape和selector的结合使用的更多相关文章

  1. 【Android进阶学习】shape和selector的结合使用(转)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://liangruijun.blog.51cto.com/3061169/732310 ...

  2. 活用shape、selector和layer-list来打造自己想要的背景效果

    活用shape.selector和layer-list来打造自己想要的背景效果 2016-04-27 13:52 281人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转 ...

  3. Android开发教程:shape和selector的结合使用

    shape和selector是Android UI设计中经常用到的,比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到shape和selector.可以这样说,shape和 ...

  4. android 开发:shape和selector和layer-list的(详细说明)

    目录(?)[+] Shape 简介 使用的方法 属性 Selector 简介 使用的方法 layer-list 简介 例子 最后   <shape>和<selector>在An ...

  5. 代码设置Shape和Selector

    开发中经常需要使用Shape和Selector,如果每个都用xml设置的话,会占用apk大小,同时命名多了也会混乱,使用代码来设置会方便很多. 需要用到2个类:GradientDrawable和Sta ...

  6. shape和selector的结合

    去掉gridview本身的点击效果:android:listSelector="@color/de_transparent": 添加两个selector,灰色的press和norm ...

  7. [Android UI] shape和selector的结合使用

    shape和selector是Android UI设计中经常用到的,比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到shape和selector.可以这样说,shape和 ...

  8. shape和selector是Android UI设计中经常用到的

    shape和selector是Android UI设计中经常用到的,比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到shape和selector.可以这样说,shape和 ...

  9. 【Android进阶学习】shape和selector的结合使用

    shape和selector是Android UI设计中经常用到的,比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到shape和selector.可以这样说,shape和 ...

随机推荐

  1. Jsp实现form的file和text传递(multipart/form-data)

    Jsp实现form的file和text传递(multipart/form-data) 首先是form部分,因为要有<input type="file" />的类型,所以 ...

  2. Labview实现脉波调制( PAM )

    Labview实现脉波调制( PAM ) 根据定义为脉冲振幅调制 生成一个正弦信号,得到其幅值输入给一个方波信号的幅值 这个等价于一个方波信号和一个正弦信号相乘 得到的PAM信号通过观察其频率可以发现 ...

  3. pb datawindow 判断是否是最后一列最后一行

    li_column1 = GetColumn() ls_columnname = GetColumnName() Send(Handle(This),,,Long(,)) ll_row2 = GetR ...

  4. [DHCP服务]——一个验证DHCP原理实验(VMware)

    大致实验拓扑图 DHCP Server端的配置 1. 安装DHCP # yum -y install dhcp 2. 拷贝配置文件 # /dhcpd.conf.sample /etc/dhcp/dhc ...

  5. go对json的解析处理

    json常用函数 func Marshal(v interface{}) ([]byte, error) //将各种数据类型转化为json数据类型 func Unmarshal (data []byt ...

  6. java 多个设备,锁定先后顺序

    场景图: 4台android设备需要被锁定顺序,下次的时候按顺序socket推送数据到这4台不同的内容.当有新的一台机器加入时,如上图的E,则插入到原位置为C的地方.具体代码如下: public st ...

  7. 使用CSS禁止textarea调整大小功能的方法

    这篇文章主要介绍了使用CSS禁止textarea调整大小功能的方法,禁止可以调整textarea大小功能的方法很简单,使用CSS的resize属性即可,需要的朋友可以参考下 如果你使用谷歌浏览器或火狐 ...

  8. 【BZOJ】【1001】 【BJOI2006】狼抓兔子

    平面图最小割->对偶图最短路 平面图最小割转对偶图最短路= = 想到了就比较好写了…… 可能是我对区域的标号方式比较奇特?反正我没有特判n==1||m==1也能过2333(机智吧-(滚开啦你个自 ...

  9. MSDN:Code First 迁移

    来自:MSDN:Code First 迁移,完全照搬! 本演练将提供对实体框架中 Code First 迁移的概述.您可以完成整个演练,也可以跳至自己感兴趣的主题.主题如下: 启用迁移 生成并运行迁移 ...

  10. 【转载】在程序中动态改变static text控件的caption值

    方法1,给STATIC控件取个名字叫IDC_STATICTITLE 然后在ClassWizard中设定一个控件变量给它叫m_statictitle 然后用m_statictitle.SetWindow ...