Android入门(2)——点击事件的三种方式监听方式

1. ButtonImageButtononclick事件:

通过自身的.setOnClickListener(OnClickListener)方法添加点击事件。


2. 所有控件都有一个onclick的事件,通过点击事件的监听可以实现点击按钮之后要发生的动作。监听事件实现的三种写法:匿名内部类的实现、独立类的实现、实现接口的方式来实现。


3. 匿名内部类的实现:

就是在setOnclickListener()函数中新建OnClickListener,然后重写它的onClick函数:

        loginButton=(Button)findViewById(R.id.button1);
	// 匿名内部类的特点就是直接在setOnClickListener上new一个匿名内部类:
        loginButton.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				System.out.println("我的Button被点击了");
			}
        	
        });
    } 


4. 外部类监听点击事件的实现:

1) OnClickListener是一个接口,不能继承(extends),可以实现(implement)。

2) 通过MyOnClickListener来实现OnClickListener

3) 对于bt1而言,点击时不仅调用自身的onClick事件:

Toast.makeText(MainActivity.this"bt1要执行的逻辑", 1).show();

同时还调用父类的onClick事件:

super.onClick(arg0);

由它去执行外部类MyOnClickListener中的onClick事件。

4) 源代码:

package com.example.hanxiaoxiao;

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

public class MainActivity extends Activity {

    private Button bt1;
    private Button bt2;
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        bt1 = (Button)findViewById(R.id.button2);
        bt2 = (Button)findViewById(R.id.button3);
        
	// 外部类监听的特点是将实现写在外边单独来实现:
        bt1.setOnClickListener(new MyOnClickListener(){
        		@Override
        		public void onClick(View arg0) {
        			// 调用父类的OnClick事件。
        			super.onClick(arg0);
                                // 自己本身的OnClick事件。
        			Toast.makeText(MainActivity.this, "bt1要执行的逻辑",1).show();	
       	 	}
        });
    } 
}
// MyOnClickListener属于父类。
class MyOnClickListener implements OnClickListener{
	@Override
	public void onClick(View arg0) {
		Log.i("tag","父类的onClick事件");
	}	
}


外部类监听的方式的好处是:当有多个Button控件拥有同样的父类外部类时,有共同点,也有不同点:

package com.example.hanxiaoxiao;

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

public class MainActivity extends Activity {

    private Button bt1;
    private Button bt2;
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        bt1 = (Button)findViewById(R.id.button2);
        bt2 = (Button)findViewById(R.id.button3);
        
        bt1.setOnClickListener(new MyOnClickListener(){
        	@Override
        	public void onClick(View arg0) {
        		// 调用父类的OnClick事件。
        		super.onClick(arg0);
        		Toast.makeText(MainActivity.this, "bt1要执行的逻辑", 1).show();
        	}
        });
        
        bt2.setOnClickListener(new MyOnClickListener(){
        	@Override
        	public void onClick(View arg0) {
        		super.onClick(arg0);
        		Toast.makeText(MainActivity.this, "bt2要执行的逻辑", 1).show();
        	}
        });
    } 
}

class MyOnClickListener implements OnClickListener{

	@Override
	public void onClick(View arg0) {
	    // 让所有使用当前外部类的点击事件的按钮都要做出一个动作,改变button本身的透明度。
	    arg0.setAlpha(0.5f);
	}	
}
效果是点击按钮时,该按钮显示逻辑框,同时按钮透明度降低。

通过这种方式可以让不同的按钮在点击后有父类相同的反映,同时也有自己特有的反映。



5.接口方式监听按钮点击事件

步骤一:添加OnClickListener实现,然后点击add...:

// 变化在这里,增加OnClickListener实现
public class MainActivity extends Activity implements OnClickListener{



随后会在该函数里面自动添加:

@Override
	public void onClick(View arg0) {
		// TODO Auto-generated method stub
		
	} 
当该接口绑定了一个按钮时,点击按钮的时候刚刚自动添加的这个onClick就会触发。
步骤二:绑定按钮。

// 变量实例化
imgBt = (ImageButton)findViewById(R.id.imageButton1);
// 通过实现一个接口的方式实现监听事件,这里只需要this即可。这样就绑定好了
imgBt.setOnClickListener(this);

源代码:

package com.example.hanxiaoxiao;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.Toast;

// 该方法的特点是直接在当前类上实现OnClickListener,该类下会有一个对应的方法onClick,然后通过this直接访问:
// 变化在这里,增加OnClickListener实现
public class MainActivity extends Activity implements OnClickListener{

	// 创建一个变量
	private ImageButton imgBt;
	
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
        	super.onCreate(savedInstanceState);
        	setContentView(R.layout.activity_main);
        
       	 	// 变量实例化
        	imgBt = (ImageButton)findViewById(R.id.imageButton1);
        	// 通过实现一个接口的方式实现监听事件,这里只需要this即可。这样就绑定好了
        	imgBt.setOnClickListener(this);
    	}

	@Override
	public void onClick(View arg0) {
		// TODO Auto-generated method stub
		Log.i("tag", "接口方式监听");
	} 
}


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值