zoukankan      html  css  js  c++  java
  • Android应用开发学习之Selector

    作者:刘昊昱 

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

     

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

    该程序中有三个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);
        }
    }
    
  • 相关阅读:
    例程 | 串口助手Comm Assist
    教程 | 蓝牙设备查找类CxBthRadio & CxBthRadioFind
    教程 | 服务端套接字类CxServerSocket
    openlayers 3加载GeoServer发布的wfs类型服务
    Geoserver端口冲突解决方案(二)
    Geoserver端口冲突解决方案
    GeoServer基础教程(四):空间数据互操作的接口规范WMS、WFS和WCS
    GeoServer基础教程(三):部署发布Shapefile地图数据
    GeoServer基础教程(二):GeoServer的Web管理界面快速入门
    GeoServer基础教程(一):环境搭建篇
  • 原文地址:https://www.cnblogs.com/riskyer/p/3231110.html
Copyright © 2011-2022 走看看