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. Enyim.Caching 客户端配置及示例

    一.工作准备 memcached客户端:Enyim.Caching.2.13 memcached服务器:memcached-win64-1.4.4-14 备注:不建议使用windows服务器,开发环境 ...

  2. [转]IP_ADD_MEMBERSHIP : 组播错误 的解决方法:

    [转]IP_ADD_MEMBERSHIP : 组播错误 的解决方法: http://www.cnitblog.com/dvb-dvb/archive/2012/10/15/aa.html by def ...

  3. PE格式的理解(待补充)

    PE文件格式 一.基本结构 1.DOS头一般到节区头成为PE头部分,其下称为PE体.文件的内容一般可分为代码(.text).数据(.data).资源(.rsrc),分别保存. 2.PE头与各节区的尾部 ...

  4. Struts2重定向

    第一方式:  参数之间必须使用&   .&是&在xml中转义字符  <result name="error" type="redirect& ...

  5. html5+ plus和phoneGap、cordova的比较

    偶遇大神言论,摘录 phonegap出的早,自然用的人多.phonegap自己的定位是混合开发hybrid,用原生+js:HBuilder的定位是纯js搞定一切.5+ 和 phonegap在能力.性能 ...

  6. Web前端一种动态样式语言-- Less

    变量 变量允许我们单独定义一系列通用的样式,然后在需要的时候去调用.所以在做全局样式调整的时候我们可能只需要修改几行代码就可以了. // LESS @color: #4D926F; #header { ...

  7. Surface Pro 3 扩展坞体验

    Surface Pro 3 的确是Microsoft的诚意之作,虽然价格不便宜,但值得入手. 买完Surface Pro 3 后,没事在某网站上闲逛,这货(扩展坞)映入我的眼帘,看完后,心想,这货必须 ...

  8. c++ ip地址的操作 c版

    http://blog.csdn.net/cpp_funs/article/details/6988154 1.htonl ()和ntohl( ) u_long PASCAL FAR ntohl (u ...

  9. it小小鸟心得

    本来打算就这么浑浑噩噩的过完我的大学四年生涯,但当我读完这本书,改变了我的想法.许多人说大学是最美好的,确实,在这里,我每天都不用认真听讲,不用准时去上课,可是久而久之,自己有感而发觉得这样碌碌无为下 ...

  10. 将通过find命令找到的文件拷贝到一个新的目录中

    将通过find命令找到的文件拷贝到一个新的目录中 有这样的一个需求,需要将一部分符合条件的文件从一个目录拷贝到另一个目录中,我通过find命令从源目录查找到符合条件的文件然后使用cp命令拷贝到目标目录 ...