按钮控件Button和事件处理

本文详细介绍了Android中Button的四个主要监听器方法:OnClickListener、OnLongClickListener、OnKeyListener和OnTouchListener,并通过实例展示了如何在实际应用中使用这些监听器来响应用户的操作。文章还演示了如何监听物理按键事件和触摸事件,以及如何获取触摸坐标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、Button监听器及其包含的方法

监听器及其包含的方法
监听器方法内容 
OnClickListeneronClick监听点击事件,用户点击或者按下导航键时调用其方法 
OnLongClickListeneronLongClick监听长按事件,用户保持点击或者按住导航键时调用其方法 
OnKeyListeneronKey监听物理按键,用户点击或者松开物理键时调用其方法 
OnTouchListeneronTouch监听触摸事件,用户执行触摸操作(可以是点击、滑动、弹起等)时调用其方法 

2、实例讲解

***********

java代码

***********

package com.pms.listener;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MyListener extends Activity {
	
	/*声明控件的引用*/
	private Button bt;
	private TextView tv;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        tv = (TextView) findViewById(R.id.tv);
        bt = (Button) findViewById(R.id.bt);//得到Button的引用
        
        /*匿名内部类作为监听器*/
        bt.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				tv.setText("你点击了Button");//设置TextView所显示的内容,点击Button的时候调用该方法
				
			}
		});
        
        bt.setOnLongClickListener(new OnLongClickListener() {
			
			@Override
			public boolean onLongClick(View v) {
				tv.setText("你长按了Button");
				return true;//注意这里必须是return true
			}
		});
    }
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		switch(keyCode)
		{
			case KeyEvent.KEYCODE_DPAD_UP:
				tv.setText("你按下了上方向键");//监听按下下方向键的动作
				break;
			case KeyEvent.KEYCODE_DPAD_DOWN:
				tv.setText("你按下了下方向键");//监听按下上方向键的动作
				break;
							
		}
		return super.onKeyDown(keyCode, event);
	}
	@Override
	public boolean onKeyUp(int keyCode, KeyEvent event) {
		switch(keyCode)
		{
			case KeyEvent.KEYCODE_DPAD_UP:
				tv.setText("你松开了上方向键");//监听松开上方向键的动作
				break;
			case KeyEvent.KEYCODE_DPAD_DOWN:
				tv.setText("你松开了下方向键");//监听松开下方向键的动作
				break;
							
		}
		return super.onKeyUp(keyCode, event);
	}
	@Override
	public boolean onTouchEvent(MotionEvent event) {
		
		int x = (int) event.getX();
		int y = (int) event.getY();
		
		switch(event.getAction())
		{
			case MotionEvent.ACTION_MOVE:
				tv.setText("你滑动了屏幕");
				break;
			case MotionEvent.ACTION_DOWN:				
				tv.setText("你点击的屏幕坐标为"+Integer.toString(x)+","+Integer.toString(y));//取得点击坐标
				break;
			case MotionEvent.ACTION_UP:
				tv.setText("你离开屏幕的坐标为"+Integer.toString(x)+","+Integer.toString(y));//取得松开是的坐标
				break;
		}
		
		return super.onTouchEvent(event);//最好为return true
	}
    
}


***********

main.xml

**********

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView
 android:id="@+id/tv"  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:textSize="20sp" 
    android:text="@string/hello"
    />
<Button
 android:id="@+id/bt"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:text="myButton"/>
</LinearLayout>

运行结果:

总结:

普通监听方法:

bt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//设置TextView所显示的内容,点击Button的时候调用该方法
}
});

长时间按钮监听方法

bt.setOnLongClickListener(new OnLongClickListener() {

@Override
public boolean onLongClick(View v) {
return true;//注意这里必须是return true
}
});

获取鼠标坐标的位置方法

int x = (int) event.getX();
int y = (int) event.getY();

OK就写到这里,希望对大家学习有用,加油

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值