Android监听Button和ImageButton控件的点击事件

一、onClick事件  

  Button和ImageButton都有一个onClick事件,通过自身的.setOnClickListener(OnClickListener)方法添加点击事件

   所有的控件都有onClick事件,不仅仅是Button和ImageButton才有

   通过点击事件的监听可以实现点击按钮之后要发生什么动作

 

 

二、操作的基本步骤:

   第一步:声明一个私有变量,用于存储获取到的控件对象

   第二步:初始化当前需要的控件(找到需要操作的那个控件)

   第三步:设置Button的监听器,通过监听器实现我们点击Button要操作的事情

 

 

三、匿名内部类的方式实现监听onClick事件

package com.muke.textview_edittext;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {
    
    private Button loginButton;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        //1、初始化当前所需要的控件(就是找到需要操作的那个控件,findViewById方法返回的是view对象,需要向下转型成Button对象)
        loginButton = (Button) findViewById(R.id.button1);
        
        //2、设置Button的监听器,通过监听器实现我们点击Button要操作的事情
        loginButton.setOnClickListener(new OnClickListener() {
            @Override
            //在当前onClick方法中监听点击Button的动作
            public void onClick(View v) {
                System.out.println("我的Button被点击了");
            }
        });
    }
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/login" />

</LinearLayout>

 

 

 

 

四、外部类方式实现监听onClick事件

package com.muke.textview_edittext;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {
    
    private Button loginButton;
    private Button registerButton;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        //1、初始化当前所需要的控件(就是找到需要操作的那个控件,findViewById方法返回的是view对象,需要向下转型成Button对象)
        loginButton = (Button) findViewById(R.id.button1);
        registerButton = (Button) findViewById(R.id.button2);
        
        //2、设置Button的监听器,通过监听器实现我们点击Button要操作的事情
        loginButton.setOnClickListener(new MyOnClickListener(){
            public void onClick(View v) {
                super.onClick(v);       //MyOnClickListener是父类,当点击这个按钮的时候会执行这个方法也会执行父类的onClick方法
                Toast.makeText(MainActivity.this, "loginButton要执行了(子类)", 1).show();
            }
        });

        registerButton.setOnClickListener(new MyOnClickListener(){
            public void onClick(View v) {
                super.onClick(v);     //MyOnClickListener是父类,当点击这个按钮的时候会执行这个方法也会执行父类的onClick方法
                Toast.makeText(MainActivity.this, "registerButton要执行了(子类)", 1).show();
            }
        });
    }
}


//OnClickListener是一个接口,所以使用implements 去实现
class MyOnClickListener implements OnClickListener{
    @Override
    public void onClick(View v) {
        System.out.println("loginButton和registerButton要执行了(父类)");
        v.setAlpha(0.5F); //设置两个按钮loginButton和registerButton的透明度
    }
    
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/login" />
    
    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/register" />

</LinearLayout>

 

 

 

 

五、接口方式实现监听onClick事件

package com.muke.textview_edittext;

import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity implements OnClickListener{
    
    private Button loginButton;
    private Button imageButton;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        //1、初始化当前所需要的控件(就是找到需要操作的那个控件,findViewById方法返回的是view对象,需要向下转型成Button对象)
        loginButton = (Button) findViewById(R.id.button1);
        imageButton = (Button) findViewById(R.id.imageButton1);
        
        loginButton.setOnClickListener(this);
        imageButton.setOnClickListener(this);
    }

    //2、设置Button的监听器,通过监听器实现我们点击Button要操作的事情
    @Override
    public void onClick(View v) {
        System.out.println("第三种方式接口实现");
    }
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/login" />

    <ImageButton
        android:id="@+id/imageButton1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" />

</LinearLayout>

 

posted @ 2015-07-19 22:29  胡椒粉hjf  阅读(2629)  评论(0编辑  收藏  举报