`

android中ImageButton的使用

阅读更多
范例说明
延续前一章按钮事件的应用范例重新设计一个具有背景图的按钮,让按钮有美观的背景图片,只是这次不使用先前的Button Widget,而是改以ImageButton Widget来显示。

将按钮背景图预先Import至Drawable里(*.png图形文件),利用这些图片,作为ImageButton的背景图。为了做对照,我们另外在Layout配置一个“一般按钮”,运行结果画面中,可以明显看出图片按钮与一般按钮在外观上的差异。

一般来说,要设置ImageButton背景图有许多方法,此程序使用的方法是ImageButton.setImage- Resource(),需要传递的参数即是res/drawable/下面的Resource ID,除了设置背景图片的方法外,程序需要用到onFocusChange与onClick等按钮事件作为按钮事件单击之后的处理,最后通过TextView来显示目前图片按钮的状态为onClick、onFocus,或offFocus,并且同步更新按钮的背景图,让User有动态交互的感觉。


src/irdc.ex04_02/EX04_02.java
主程序构造三个对象ImageButton、Button与TextView,并在ImageButton上设置onFocus ChangeListener与onClickListener,并实现Image Button图片的置换。

ImageButton.setOnFocusChangeListener()是处理User单击图片按钮之后需要处理的关键,当单击图片按钮的瞬间,以ImageButton.setImageResource()来更换背景图片。



/* import程序略 */

import android.view.View.OnClickListener;

import android.view.View.OnFocusChangeListener;



public class EX04_02 extends Activity

{

  /*声明三个对象变量(图片按钮,一般按钮,与TextView)*/

  private ImageButton mImageButton1;

  private Button mButton1;

  private TextView mTextView1;

 

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

  @Override

  public void onCreate(Bundle savedInstanceState)

  {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

   

    /*通过findViewById构造三个对象*/

    mImageButton1 =(ImageButton) findViewById(R.id.myImageButton1);

    mButton1=(Button)findViewById(R.id.myButton1);

    mTextView1 = (TextView) findViewById(R.id.myTextView1);

   

    /*通过OnFocusChangeListener来响应ImageButton的onFous事件*/

    mImageButton1.setOnFocusChangeListener(new OnFocusChangeListener()

    {

      public void onFocusChange(View arg0, boolean isFocused)

      {

        // TODO Auto-generated method stub

       

        /*若ImageButton状态为onFocus改变ImageButton的图片

         * 并改变textView的文字*/

        if (isFocused==true)

        {

          mTextView1.setText("图片按钮状态为:Got Focus");

          mImageButton1.setImageResource(R.drawable.iconfull);

        }

        /*若ImageButton状态为offFocus改变ImageButton的图片

         *并改变textView的文字*/

        else

        {

          mTextView1.setText("图片按钮状态为:Lost Focus");

          mImageButton1.setImageResource(R.drawable.iconempty);

        }

      }

    });

      

    /*通过onClickListener来响应ImageButton的onClick事件*/

    mImageButton1.setOnClickListener(new OnClickListener()

    {

      public void onClick(View v)

      {

        // TODO Auto-generated method stub

        /*若ImageButton状态为onClick改变ImageButton的图片

         * 并改变textView的文字*/

        mTextView1.setText("图片按钮状态为:Got Click");

        mImageButton1.setImageResource(R.drawable.iconfull);

      }  

    });

     

    /*通过onClickListener来响应Button的onClick事件*/

    mButton1.setOnClickListener(new OnClickListener()

    {

      public void onClick(View v)

      {

        // TODO Auto-generated method stub

        /*若Button状态为onClick改变ImageButton的图片

         * 并改变textView的文字*/

        mTextView1.setText("图片按钮状态为:Lost Focus");

        mImageButton1.setImageResource(R.drawable.iconempty);

      }

    });

  }

}



扩展学习
除了在运行时用onFocus()与onClick()事件来设置按钮背景图片外,Android的MVC设计理念可以让程序运行之际初就以xml定义的方式来初始化ImageButton的背景图,这仅需先将图片导入res/drawable。

设置方法为在res/drawable下自行定义一个xml,主要针对按钮的state_focused、state_pressed与drawable属性作设置,如下所示:

drawable/advancedbutton.xml
<?xml version="1.0" encoding="utf-8"?> 

<selector

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

  <item

    android:state_focused="true"

    android:state_pressed="false"

    android:drawable="@drawable/btnfocused" />

  <item

    android:state_focused="true"

    android:state_pressed="true"

    android:drawable="@drawable/btnfocusedpressed" />

  <item

    android:state_focused="false"

    android:state_pressed="true"

    android:drawable="@drawable/btnpressed" />

  <item android:drawable="@drawable/btndefault" />

</selector>



然后,在main.xml中将advancedbutton赋值给Button组件中background的属性。

layout/main.xml
<Button

  android:id="@+id/myButton1"

  android:background="@drawable/advancedbutton"

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  android



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zeng622peng/archive/2010/11/16/6012017.aspx
分享到:
评论

相关推荐

    Android中ImageButton的用法

    在Android开发中,`ImageButton`是一个非常重要的视图组件,它是`Button`的子类,但与普通`Button`的区别在于它可以显示图像,这使得它成为创建图标化操作按钮的理想选择。`ImageButton`的设计旨在提供一种更加直观...

    android下imagebutton换图片

    以上就是Android中`ImageButton`换图片的基本方法,通过合理使用`selector`和监听器,我们可以轻松实现按钮按下和弹起时的图片切换效果,提升用户交互体验。如果你有`test_lzy`这个压缩包文件,里面可能包含了一些...

    android ImageButton的使用

    在Android开发中,`ImageButton`是一个非常常用的组件,它继承自`ImageView`,但与普通的`ImageView`不同,`ImageButton`允许用户点击,因此常用于实现具有交互功能的按钮。本篇文章将深入探讨`ImageButton`的使用,...

    Android中ImageButton的常用方法一览.pdf

    在Android开发中,`...通过这些基本操作,开发者可以灵活地在Android应用中使用`ImageButton`,创建出具有视觉吸引力且易于交互的用户界面。了解并熟练掌握这些方法,对于提升Android应用的用户体验至关重要。

    Android自定义ImageButton(带文字)

    在构造函数中,我们可以通过设置setTag()方法来传递文本,然后在onDraw()中使用它: ```java @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 绘制文本 } ``` 使用`canvas....

    Android开发教你使用ImageButton系统图标

    本文将详细介绍如何在Android应用中正确地使用`ImageButton`并利用系统图标,以解决网络上常见教程中的困扰。 首先,我们来了解`ImageButton`的基本使用。在布局文件(如`activity_main.xml`)中,你可以通过以下...

    Android开发中ImageButton如何使用系统图标

    本文将详细介绍如何在Android应用中使用系统图标来定义`ImageButton`,并提供一个经过验证的示例。 首先,我们需要了解Android系统的资源结构。在Android中,系统图标位于`res/drawable`目录下,分为不同的子目录,...

    android imagebutton点击变化 源码

    在Android开发中,`ImageButton`是一个非常常用的控件,它结合了`ImageView`的功能和`Button`的交互性,允许用户通过点击来触发相应的事件。本篇将深入探讨`ImageButton`在点击时如何实现图像的变化,并通过源码解析...

    android ImageButton背景图片的切换

    ImageButton 是 Android 中的一种视图控件,用于显示图片。它继承自 ImageView,提供了更多的交互功能。ImageButton 可以设置背景图片、SRC 图片、点击事件等。 实现 ImageButton 背景图片的切换 要实现 ...

    Android ImageButton图片按钮Demo源码.rar

    这个"Android ImageButton图片按钮Demo源码.rar"应该包含了一个完整的示例项目,用于演示如何在Android应用中使用`ImageButton`。 首先,我们来详细了解一下`ImageButton`的基本用法。`ImageButton`主要通过设置其`...

    Android4.0开发学习之ImageButton

    在Android 4.0中,`ImageButton`还支持触摸反馈效果,可以通过设置`android:tint`属性或使用`android:foreground`属性来改变图像的颜色或者添加前景效果。同时,你可以利用`android:scaleType`调整图像在按钮中的...

    Android ImageButton的使用 及长按Button的实现

    总的来说,`ImageButton`在Android应用开发中扮演着重要的角色,结合点击和长按事件,可以实现丰富的交互功能。通过理解其使用方法和事件处理机制,开发者可以更灵活地设计用户界面,提升用户体验。

    Android应用源码之(ImageButton图片按钮).zip

    `ImageButton`的样式可以通过自定义主题或者在XML布局中使用`style`属性进行更改。可以定义自己的主题样式,如边框宽度、颜色、阴影等。 8. **源码分析** 通过查看压缩包中的源码,你可以学习到如何在实际项目中...

    Android UI编程自定义控件ImageButton

    - 在新类中通过`TypedArray`获取这些属性,并在构造函数中使用它们来初始化控件状态。 3. **自定义Drawable** - 使用`StateListDrawable`为不同状态(如正常、按下、聚焦)创建不同的图像。 - `GradientDrawable...

    Android 单击选中的ImageButton[]图像数组用法示例.rar

    Android 单击选中的ImageButton[]图像数组用法示例,类似于Radio的功能,不过用图片表现,这样可使Android UI更加友好,视觉更漂亮一些,用户轻触图片,即可选中该数据项,比Radio用户体验更好,如截图所示的选中...

    安卓Android源码——(ImageButton图片按钮).zip

    在 Android 系统中,`ImageButton` 的使用主要涉及以下几个方面: 1. **布局定义**: 在 XML 布局文件中,我们可以通过 `&lt;ImageButton&gt;` 标签来创建一个图片按钮。基本用法如下: ```xml &lt;ImageButton android:...

    好的-Android2.2 API中文文档——ImageButton.doc

    Android2.2 API中文文档——ImageButton.doc

    11-android ImageButton 图片按钮

    在Android开发中,`ImageButton`是一个非常常用的组件,它继承自`ImageView`,并增加了点击事件处理的功能,使得我们可以将图片作为按钮使用。本篇主要探讨`ImageButton`的使用、特性以及与源码相关的知识。 首先,...

    android自定义控件ImageButton

    接下来,要在XML布局中使用自定义的`CustomImageButton`,你需要在布局文件中声明你的自定义类,并设置相应的属性: ```xml android:id="@+id/custom_image_button" android:layout_width="wrap_content" ...

    安卓Android源码——ImageButton.rar

    在 Android 应用开发中,`ImageButton` 是一个常用的组件,它继承自 `Button` 类,但增加了显示图像的功能,使得按钮不仅有文字,还可以有图片,提高了界面的美观度和用户体验。本篇文章将深入探讨 `ImageButton` 的...

Global site tag (gtag.js) - Google Analytics