Android应用开发学习之Selector

作者:刘昊昱 

博客:http://blog.csdn.net/liuhaoyutz

 

本文我们来看一个通过selector动态改变ImageButton背景图片的例子,下图是该程序的运行效果:

Android应用开发学习之Selector

该程序中有三个ImageButton,最上面的是鼠标按下时的状态;中间的是鼠标没有按下,但是按钮获得了焦点的状态;最下面的是鼠标没有按下,按钮也不具有焦点的状态。

先来看主布局文件main.xml,其内容如下:

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

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

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:orientation="vertical" >

    

    <ImageButton 

		android:id="@+id/button1" 

		android:src="@drawable/button_image_selector" 

		android:focusableInTouchMode="true"

		android:background="#0000"

		android:layout_width="wrap_content" 

		android:layout_height="wrap_content">

	</ImageButton>

	

    <ImageButton 

		android:id="@+id/button2" 

		android:src="@drawable/button_image_selector" 

		android:focusableInTouchMode="true"

		android:background="#0000"

		android:layout_width="wrap_content" 

		android:layout_height="wrap_content">

	</ImageButton>

	

    <ImageButton 

		android:id="@+id/button3" 

		android:src="@drawable/button_image_selector" 

		android:focusableInTouchMode="true"

		android:background="#0000"

		android:layout_width="wrap_content" 

		android:layout_height="wrap_content">

	</ImageButton>



</LinearLayout>


在线性布局控件中,放置三个ImageButton,android:src属性指定了背景图片选择器button_image_selector.xml,android:focusableInTouchMode属性标明按钮可以获得焦点。android:background="#0000"属性是为了去掉按钮背后的灰色边框,但是这样做,如果不用背景选择器的话,会看不出点击效果。

按钮背景图片选择器button_image_selector.xml定义如下:

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

<selector

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

    <item android:state_pressed="true" android:drawable="@drawable/image01"/>

    <item android:state_pressed="false" android:state_focused="true" android:drawable="@drawable/image02"/>

    <item android:state_pressed="false" android:state_focused="false" android:drawable="@drawable/image03"/>

</selector>


item1指定了鼠标按下时的背景图片,item2指定了鼠标没有按下,但是获得焦点时的背景图片,item3指定了鼠标没有按下,且没有焦点时的背景图片。

主Activity文件没有什么特别的,其内容如下:

package com.liuhaoyu;



import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;



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 {

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

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

    }

}

 

你可能感兴趣的:(selector)