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. java implement

    接口不能被实例化,但是可以声明一个接口类型的变量. eg. A implements B,则可以有B variableName = new A(),这和extends的用法是类似的 接口可被认为是纯抽 ...

  2. 解决SQLite数据库中文乱码问题

      关于SQLite中出现中文乱码的分析以及解决方案 我们在使用SQLite数据库时候,可能会发现,向数据库插入数据时候显示的是汉字,但通过SQLite读出来时却显示的乱码,这是因为SQLite数据库 ...

  3. javascript权威指南第六版学习

    第二章 语法结构 2.1 字符集 什么是字符集?各种字符集什么关系?unicode,utf-8是什么关系? 字符(Character)是各种文字和符号的总称,包括各国家文字.标点符号.图形符号.数字等 ...

  4. Oracle VM VirtualBox 5.0 CentOS 6.4 共享文件夹

    首先在主机(win7)的硬盘建立需要共享文件夹 例如 D:\share_test 然后虚拟机光驱加载Oracle VM VirtualBox安装目录的iso  C:\Program Files\Ora ...

  5. 转载—“Cache-control”常见的取值有private、no-cache、max-age、must-revalidate等

    转载自http://www.cnblogs.com/igin/archive/2008/05/04/1181056.html 网页的缓存是由HTTP消息头中的“Cache-control”来控制的,常 ...

  6. C#_音乐播放器_用ListBox显示歌词

    在用ListBox显示歌词的时候,可以显示多行,同时可以控制每一行显示的样式等等.控制显示样式是在它的DrawItem事件中来控制的.首先要先将ListBox的DrawMode属性设置为OwnerDr ...

  7. 【BZOJ】【3210】花神的浇花集会

    曼哈顿距离与切比雪夫距离 QAQ蒟蒻并不知道切比雪夫距离是什么……并不会做这道题…… 去膜拜了PoPoQQQ大爷的题解: 题目大意:给定平面上的n个点,求一个点到这n个点的切比雪夫距离之和最小 与31 ...

  8. [bzoj 3226]校门外的区间

    题意 输出最后的集合   题解 校门外的树会做吧 区间知道是什么东西吧 校门外的区间会做了吧 昨天做个大线段树没做出来,今天做个小线段树压压惊 py一下输入数据,然后操作变成: U 区间涂1 I 两侧 ...

  9. 玩具装箱 bzoj1010 斜率优化

    斜率优化的题好像都是这样的方程:左边关于j,k的一个(...)/(...)的式子,右边是个只与i有关的可算的数字: 然后把它放到二维坐标轴上,用单调队列维护一个凸壳,O(n)的复杂度: 这道题但是我发 ...

  10. mysql查看连接数和状态,设置连接数和超时时间

    1.mysql> show status like '%connect%'; Connections,试图连接到(不管是否成功)MySQL服务器的连接数.   Max_used_connecti ...