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. 通过firefox+ProxySelector+dtunnel_lite实现代理上网

    通过firefox+ProxySelector+dtunnel_lite实现代理上网 dtunnel_lite:http://dog-tunnel.tk/下载lite版本就可以 远端:./dtunne ...

  2. FPGA中如何实现除法?

    摘自:<xilinx FPGA 开发实用教程> 1)被除数重复的减去除数,直到检测到余数小于除数为止,优点:对于除数与被除数相差较小的情况下合适 2)通过如下图片方式实现+状态机.优点:挺 ...

  3. mysql 创建一个用户,指定一个数据库

    mysql 创建一个用户 hail,密码 hail,指定一个数据库 haildb 给 hail mysql -u root -p password use mysql; insert into use ...

  4. XAML中的Path

    利用Path创建图形的时候,如果path对象的Fill属性不设置,那么绘制出来的图形首尾是不连接的. 如果设置了Fill属性,当Fill的Color属性为Transparent时,图形也不会首尾连接: ...

  5. 课堂练习:给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数。

    题目 1 给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数. 2 要求: (1) 写一个函数 f(N) ,返回1 到 N 之间出现的“1”的个数.例如 f(12)  ...

  6. 小学生四则运算C/C++编程设计思想

    题目: 1.题目避免重复:        2.可定制(数量(打印方式)):        3.可控制下列参数:是否有乘除法.是否有括号.数值范围.加减有无负数.        除法有无余数.是否支持分 ...

  7. 802.11 wireless 六

    802.11 wireless 6Bluetooth蓝牙1.无线个人网络(WPAN)的无线电系统2.普通链路范围 10米/0dBm(100米/20dBm)3.传输频率在2.402 GHZ和2.480 ...

  8. 02.Apache FtpServer使用数据库管理用户

    1.创建数据库及表 使用\apache-ftpserver-1.0.6\res\ftp-db.sql建表,内容如下: CREATE TABLE FTP_USER ( userid VARCHAR(64 ...

  9. ACM--South Pacific 2012

    题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=5 ...

  10. 推荐系统之LFM

    这里我想给大家介绍另外一种推荐系统,这种算法叫做潜在因子(Latent Factor)算法.这种算法是在NetFlix(没错,就是用大数据捧火<纸牌屋>的那家公司)的推荐算法竞赛中获奖的算 ...