版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年未成年人保护法知识竞赛学生组备赛题库
- 2026年集体合同规定及工资集体协商题库
- 2026年加油站安全生产责任制考核细则
- 2026年产业园区消防安全隐患排查治理实务试题
- 2026年市级获得信贷便利度题库
- 2026年政府购买服务管理办法知识测试题
- 2026年社会学视角下的农村问题研究
- 2026年体育彩票团委干事岗招聘青年工作题
- 2026年绿色工厂绿色园区绿色供应链评价标准问答
- 2026年森林防火条例与应急处置知识竞赛题
- 2026内蒙古和林格尔新区建设管理咨询有限公司招聘6人建设考试备考题库及答案解析
- 【武汉】2025年湖北武汉市教育系统专项招聘事业单位编制教师679人笔试历年典型考题及考点剖析附带答案详解
- 食品安全标准及员工培训手册
- 2026年度学校心理健康节方案
- 2026年地理信息系统与环境影响评价
- 龙湖集团批量精装交付标准(可编辑版)
- 2026时政热点考试卷及答案
- GB/T 46918.2-2025微细气泡技术水中微细气泡分散体系气体含量的测量方法第2部分:氢气含量
- 蛋糕店人员培训制度
- 2025年北京市海淀区中考化学真题
- 2025年东北大学强基笔试试题及答案
评论
0/150
提交评论