selector背景选拔器的选用详解威尼斯人6799.com,背景选取器

本文转自:http://dev.10086.cn/cmdn/wiki/index.php?doc-view-6014.html

在开发应用中,很多情形下要规划listview或button控件的背景,下边总结一下android的selector的用法:
1.在drawable中配置Android的selector。 将如下的XML文件保留成你自个儿取名的.xml文件(比如item_bg.xml),并将该公文放置在drawable文件中,在系统运用时依照ListView中的列表项的气象来利用相应的背景图片。

shape和selector是Android
UI设计中通常使用的,比如大家要自定义三个圆角Button,点击Button有个别功力的浮动,就要用到shape和selector。可以如此说,shape和selector在美化控件中的功用是关键的。

 

复制代码 代码如下:

1.Shape

多年来做listview和button都要改成Android原来控件的背景,在网上检索了部分资料不是很全,所以后后总计一下android的selector的用法。
首先android的selector是在drawable/xxx.xml中布局的。
先看一下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"&gt;
    <!– 暗中认可时的背景图片–>
    <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/HTML代码

2.应用方面包车型大巴安插文件: 率先种艺术是在listview配置文件中配备,代码如下:android:listSelector=”@drawable/item_bg”
第壹种艺术是在listview的item中添加属性,代码如下:android:background=“@drawable/item_bg”
其三种艺术是在java代码中设置,代码如下:Drawable drawable
=getResources().getDrawable(冠道.drawable.item_bg);
 ListView.setSelector(drawable);
地点的安装格局呈现效果有时候为黑,所以要求在安插文件上加上如下代码:android:cacheColorHint=”@android:color/transparent”
使其背景是晶莹的。
相同,Button也有一些背景效果,如下为属性解释:
android:state_selected是安装选中时的法力
android:state_focused是安装获得大旨的成效
android:state_pressed是设置点击的功用
android:state_enabled是设置是或不是响应事件
上边是一个selector用来安装button中的文字状态,代码如下:

功用:XML中定义的几何样子

  1. <?xml version=”1.0″ encoding=”utf-8″ ?>     
  2. <selector xmlns:android=”http://schemas.android.com/apk/res/android"&gt;   
  3. <!– 暗许时的背景图片 –>    
  4.   <item android:drawable=”@drawable/pic1″ />      
  5. <!– 寻常时的背景图片 –>    
  6.   <item android:state_window_focused=”false”     
  7.         android:drawable=”@drawable/pic1″ />     
  8. <!– 非触摸格局下得到主题并单击时的背景图片 –>    
  9.   <item android:state_focused=”true” android:state_pressed=”true”     
  10.         android:drawable= “@drawable/pic2” />    
  11. <!– 触摸格局下单击时的背景图片 –>    
  12.   <item android:state_focused=”false” android:state_pressed=”true”     
  13.         android:drawable=”@drawable/pic3″ />     
  14. <!–选中时的图形背景  –>    
  15.   <item android:state_selected=”true”     
  16.         android:drawable=”@drawable/pic4″ />     
  17. <!–获得宗旨时的图纸背景  –>    
  18.   <item android:state_focused=”true”     
  19.         android:drawable=”@drawable/pic5″ />     
  20. </selector>  

复制代码 代码如下:

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

利用些xml文件:第贰种是在listview中配置android:listSelector=”@drawable/list_item_bg
抑或在listview的item中添加属性android:background=“@drawable/list_item_bg”即可兑现,恐怕在Java代码中运用:Drawable
drawable = getResources().getDrawable(冠道.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

<?xmlversion=”1.0″ encoding=”utf-8″?>
<selectorxmlns:android=”http://schemas.android.com/apk/res/android"&gt;
    <itemandroid:state_selected=”true” android:color=”#FFF” />
    <itemandroid:state_focused=”true” android:color=”#FFF” />
    <itemandroid:state_pressed=”true” android:color=”#FFF” />
    <itemandroid:color=”#000″ />
</selector>

利用的法门:

XML/HTML代码

你只怕感兴趣的稿子:

Java代码中:猎豹CS6.drawable.文件的称谓

  1. <?xml version=”1.0″ encoding=”utf-8″?>  
  2. <selector xmlns:android=”http://schemas.android.com/apk/res/android"&gt;  
  3.     <item android:state_selected=”true” android:color=”#FFF” />  
  4.     <item android:state_focused=”true” android:color=”#FFF” />  
  5.     <item android:state_pressed=”true” android:color=”#FFF” />  
  6.     <item android:color=”#000″ />  
  7. </selector>  

XML中:Android:background=”@drawable/文件的名号”

Button还是能兑现更扑朔迷离的效果,例如渐变啊等等。

属性:

XML/HTML代码

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

  1. drawable/button_color.xml  
  2. <?xml version=”1.0″ encoding=”utf-8″?>  
  3. <selector xmlns:android=”http://schemas.android.com/apk/res/android"&gt;         /   
  4.         <item android:state_pressed=”true”>//定义当button 处于pressed 状态时的形状。   
  5.               <shape>   
  6.                      <gradient  android:startColor=”#8600ff” />   
  7.                       <stroke   android:width=”2dp” android:color=”#000000″ />   
  8.                        <corners android:radius=”5dp” />    
  9.                        <padding android:left=”10dp” android:top=”10dp”   
  10.                                 android:bottom=”10dp” android:right=”10dp”/>    
  11.                  </shape>   
  12.         </item>   
  13.         <item android:state_focused=”true”>//定义当button拿到 focus时的形象   
  14.                  <shape>   
  15.                        <gradient android:startColor=”#eac100″/>   
  16.                         <stroke android:width=”2dp” android:color=”#333333″  color=”#ffffff”/>   
  17.                          <corners android:radius=”8dp” />     
  18.                          <padding android:left=”10dp” android:top=”10dp”   
  19.                                   android:bottom=”10dp” android:right=”10dp”/>                     
  20.                 </shape>   
  21.             </item>  
  22. </selector>   

里头rectagle矩形,oval椭圆,line水平直线,ring环形

     最终,要求在含有 button的xml文件里添加两项。要是是 main.xml
文件,
作者们须求在<Button />里加两项。 
     android:focusable=”true” 
     android:backgroud=”@drawable/button_color”
诸如此类当你利用Button的时候就足以投向系统自带的这黄颜色的背景了,达成特性化的背景,合作使用的欧洲经济共同体布局分外之有用啊。

<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代码中:Qashqai.drawable.文件的称号

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

<?xml version=”1.0″ encoding=”utf-8″ ?>     

<selector
xmlns:Android=”http://schemas.android.com/apk/res/android"&gt;   

<!– 暗中同意时的背景图片–>    

<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"&gt

    <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;  

    }  

}