第4章事件处理-四种点击事件_第1页
第4章事件处理-四种点击事件_第2页
第4章事件处理-四种点击事件_第3页
第4章事件处理-四种点击事件_第4页
第4章事件处理-四种点击事件_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章事件处理AWT事件处理事件描述的是用户所执行的操作。图形用户界面通过事件机制响应用户和程序的交互。当用户和界面上的控件有交互时会产生某类事件,例如点击按钮,就会产生动作事件。AWT事件处理事件处理模型AWT事件处理事件处理模型FramePanel确定Button1、用户操作2、生成事件3、提交事件事件监听器4、执行事件处理方法事件源事件事件处理者事件处理概述在Android手机主要包括键盘事件和触摸事件两大类。键盘事件包括按下、弹起等,触摸事件包括按下、弹起、滑动、双击等。事件处理概述要处理产生的事件,需要向系统注册事件监听,并在预先规定的方法中编写处理事件的代码。当某种事件发生时,系统会自动调用处理该事件的相应方法,从而实现用户与程序的交互,这就是图形用户界面事件处理的基本原理。Android的事件处理机制和J2SE的事件处理机制很接近,都是Java事件(消息)机制实现。事件处理概述事件处理概述

主要实现步骤:第一步,确定需要哪种事件监听方式,选择对应的事件监听接口;第二步,定义一个类实现该监听接口;第三步,为需要进行事件监听的控件添加监听器(注:每个控件都有各自添加监听器的方法),此监听器为在第二步中实现监听接口的类的对象。事件处理概述常用事件及处理接口No.事件接口处理方法描述1单击事件View.OnClickListenerpublicabstractvoidonClick(Viewv)单击组件时触发2单击事件View.OnLongClickListenerpublicabstractbooleanonLongClick(Viewv)长按组件时触发3键盘事件View.OnKeyListenerpublicabstractbooleanonKey(Viewv,intkeyCode,KeyEventevent)处理键盘事件4焦点事件View.OnFocusChangeListenerpublicabstractvoidonFocusChange(Viewv,booleanhasFocus)当焦点发生改变时触发5触摸事件View.OnTouchListenerpublicabstractbooleanonTouch(Viewv,MotionEventevent)产生触摸事件6创建上下文菜单View.OnCreateContextMenuListenerpublicabstractvoidonCreateContextMenu(ContextMenumenu,Viewv,ContextMenu.ContextMenuInfomenuInfo)当上下文菜单创建时触发View类的事件注册方法No.方法类型描述1publicvoidsetOnClickListener(View.OnClickListenerl)普通注册单击事件2publicvoidsetOnLongClickListener(View.OnLongClickListenerl)普通注册长按事件3publicvoidsetOnKeyListener(View.OnKeyListenerl)普通注册键盘事件4publicvoidsetOnFocusChangeListener(View.OnFocusChangeListenerl)普通注册焦点改变事件5publicvoidsetOnTouchListener(View.OnTouchListenerl)普通注册触摸事件6publicvoidsetOnCreateContextMenuListener(View.OnCreateContextMenuListenerl)普通注册上下文菜单事件常见的监听器接口OnClickListener为处理点击view对象事件的接口,是Android常用的按钮事件,它需要实现onClick(Viewv)方法,其中参数v表示被点击的View对象。该方法的功能是处理点击View对象的操作。SetOnClickListener方法用于为按钮添加监听器。课程导论

点击事件点击事件使用View.OnClickListener接口进行事件的处理,此接口定义如下。publicstaticinterfaceView.OnClickListener{ publicvoidonClick(Viewv);}点击事件实现1第一种设置点击对象的方法,创建一个内部类。类体中定义的类就是内部类。支持代码重用,结构稍微复杂。点击事件实现1点击事件实现1<?xmlversion="1.0"encoding="utf-8"?>

<LinearLayoutxmlns:android=

"/apk/res/android"

android:id="@+id/MyLayout2"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical">

<Button

android:id="@+id/bt"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal"

android:layout_margin="100dp"

android:onClick="click"

android:text="点我"/>

</LinearLayout>publicclassClickActivityextendsActivityimplementsView.OnClickListener{

Buttonbutton;

@Override

protectedvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_click);

button=(Button)super.findViewById(R.id.bt);button.setOnClickListener(newmyonclicklisener());}classmyonclicklisenerimplementsView.OnClickListener{@OverridepublicvoidonClick(Viewv){Toast.makeText(ClickActivity.this,"用第一种方式我被点击了",Toast.LENGTH_SHORT).show();}}}点击事件实现1点击事件实现1第二种方式:直接用new接口,创建匿名内部类。结构简单,代码不能重用。点击事件实现2点击事件实现2publicclassClickActivityextendsActivity{

Buttonbutton;

@Override

protectedvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_click);

button=(Button)super.findViewById(R.id.bt);

button.setOnClickListener(newView.OnClickListener(){

@Override

publicvoidonClick(Viewv){

Toast.makeText(ClickActivity.this,

"用第二种方式我被点击了",Toast.LENGTH_SHORT).show();

}

});

}点击事件实现2点击事件实现3第三种方法,在布局文件中为控件设置onClick属性声明方法,属性名为其实现点击事件的方法名。很少使用。点击事件实现3<?xmlversion="1.0"encoding="utf-8"?>

<LinearLayout

xmlns:android=“/apk/res/android”

android:id=“@+id/MyLayout2”

android:layout_width=“fill_parent”

android:layout_height=“fill_parent”

android:orientation=“vertical”>

<Button

android:id=“@+id/bt”

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:layout_gravity=“center_horizontal”

android:layout_margin=“100dp”

android:onClick=“click“//方法名click

android:text="点我"/>

</LinearLayout>点击事件实现3publicclassClickActivityextendsActivity{

Buttonbutton;

@Override

protectedvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_click);

button=(Button)super.findViewById(R.id.bt);

}publicvoidclick(Viewview){//添加View对象传递父窗体

Toast.makeText(this,"用第三种方式我被点击了",

Toast.LENGTH_SHORT).show();

}点击事件实现3点击事件实现4第四种点击事件实现方法,整个页面也就是ClickActivity实现接口。点击事件实现4publicclassClickActivityextendsActivityimplementsView.OnClickListener{

Buttonbutton;

@Override

protectedvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_click);

button=(Button)super.findViewById(R.id.bt);

button.setOnClickListener(this);//this将整个页面传进来

}

@Override

publicvoidonClick(Viewv){

Toast.makeText(this,"用第四种方式我被点击了",

Toast.LENGTH_SHORT).show();}

}点击事件实现4点击事件实现4将整个页面也就是ClickActivity实现接口,根据不同的控件完成不同的点击事件操作,适合多个控件都具备点击事件的情况。点击事件实现4<?xmlversion="1.0"encoding="utf-8"?>

<LinearLayoutxmlns:android="/apk/res/android"

android:id="@+id/MyLayout2"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical">

<Button

android:id="@+id/bt"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal"

android:layout_margin="100dp"

android:text="点我"/>

<Button

android:id="@+id/bt1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal"

android:layout_margin="100dp"

android:text="点我"/>

</LinearLayout>publicclassClickActivityextendsActivityimplementsView.OnClickListener{

Buttonbutton,button1;

@Override

protectedvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_click);

button=(Button)super.findViewById(R.id.bt);

button1=(Button)super.findViewById(R.id.bt1);

button.setOnClickListener(this);//this将整个页面传进来

button1.setOnClickListener(this);//this将整个页面传进来}

@Override

publicvoidonClick(Viewv){

switch(v.getId()){

caseR.id.bt:

Toast.makeText(this,

"我是第一个按钮,用第四种方式我被点击了",Toast.LENGTH_SHORT).show();

break;

caseR.id.bt1:

Toast.makeText(this,

"我是第二个按钮,用第四种方式我被点击了",Toast.LENGTH_SHORT).show();

break;

default:

break;

}}}定义对话框定义布局文件<?xml

version="1.0"

encoding="utf-8"?><LinearLayout

线型布局管理器

xmlns:android="/apk/res/android"

android:id="@+id/MyLayout"

布局管理器ID,程序中使用

android:orientation="horizontal"

组件采用水平排列

android:layout_width="fill_parent"

组件宽度为屏幕宽度

android:layout_height="fill_parent">

组件高度为屏幕高度

<TextView

定义文本显示组件

android:id="@+id/mytext"

此组件ID,程序中使用

android:text=“经济管理学院"

默认的显示文字

android:layout_width="wrap_content"

组件宽度为文字宽度

android:layout_height="wrap_content"/>

组件高度为文字高度

<Button

定义普通按钮

android:id="@+id/mybut"

此组件ID,程序中使用

android:text="删除"

组件的默认显示文字

android:layout_width="wrap_content"

组件的宽度为文字宽读

android:layout_height="wrap_content"/>

组件的高度为文字高度</LinearLayout>packagecom.example.angel.myapplication;importandroid.app.Activity;importandroid.os.Bundle;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.app.AlertDialog;importandroid.widget.*;

publicclassMainActivityextendsActivityimplementsOnClickListener{

privateButtonmybut=null;

@Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

super.setContentView(R.layout.activity_main);

mybut=(Button)super.findViewById(R.id.mybut);

mybut.setOnClickListener(this);}

@Override

publicvoidonClick(Viewv){

AlertDialog.Builderdialog=newAlertDialog.Builder(this);

dialog.setIcon(R.drawable.pic_m);

dialog.setTitle("确定删除?");

dialog.setMessage("您确定要删除该条信息吗?");

dialog.show();}}带按钮的对话框在android的alertDialog中封装好一些Button,这些Button和普通的Button没有任何区别,可以写任意的方法,只是命名上的不同,一般有三个Button:PositiveButton,代表确定NegativeButton,代表否定NeutralButton,代表中立带按钮的对话框带按钮的对话框publicclassClickActivityextendsActivity{

@Override

protectedvo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论