中职 Android智能手机软件开发教程第5章电子课件 高教版 .ppt
《中职 Android智能手机软件开发教程第5章电子课件 高教版 .ppt》由会员分享,可在线阅读,更多相关《中职 Android智能手机软件开发教程第5章电子课件 高教版 .ppt(68页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第5 5章章 Android Android事件处理机制事件处理机制与常用与常用WidgetWidget组件应用组件应用掌握常见的事件监听器方法,掌握View被点击、获得焦点等时调用的View.OnClickListener里的onClick()方法、View.OnKeyListener里的onKey()方法等相关的事件监听器方法。掌握常见的widget组件及其使用方式。Android Widget是Android SDK 1.5之后新加入的一个开发框架。相当于Windows的小插件,可以嵌入到手机应用程序中的人机交互界面上。常见的有:显示字符串的TextView控件自动完成AutoComp
2、leteTextView控件按钮Button控件输入文本框EditText控件复选框CheckBox控件无线按钮RadioButton控件线性布局、图像按钮ImageButton控件下拉列表Spinner、ListView控件进度条控件等。5.1 Widget5.1 Widget概述概述5.2.1在Activity中设定Button在布局XML文件(如reslayoutmain.xml)中提前定义好的Button,可以通过在Activity中调用setContentView()函数的方法来使用。除此之外,还可以直接在Activity中创建Button(不需要XML布局文件)。5.2 Butto
3、n5.2 Button加载线性布局。linearLayout=new LinearLayout(this);/实例化对象linearLayout.setOrientation(LinearLayout.VERTICAL);/垂直linearLayout.setBackgroundColor(Color.GRAY);/背景setContentView(linearLayout);/加载上述设定的布局linearLayoutParams=new LinearLayout.LayoutParams(myparams,myparams);ButtonButton案例案例处理按钮点击事件时,调用按钮的s
4、etOnClickListener()方法,并把View.OnClickListener的实例作为参数传入。在View.OnClickListener的onClick()方法里,取得被点击按钮的实例。通过侦听Button被单击的事件(利用OnClickListener函数),可以完成相应的功能。5.2.2 侦听按钮被单击的动作侦听按钮被单击的动作Button button1;/定义Button实例TextView myshow;/定义TextView实例Overridepublic void onCreate(Bundle savedInstanceState)/重写的onCreate方法su
5、per.onCreate(savedInstanceState);setContentView(R.layout.main);/采用默认的main布局OnClickListener listener1=new OnClickListener()public void onClick(View v)/捕获点击后的事件setTitle(现在已经跳转到新的布局中);button1.setVisibility(View.INVISIBLE);/不可见button1.setTextSize(20.0f);/设置大小button1.setHint(提示信息);/后略Android用户与应用程序之间的交互是
6、通过事件处理来完成的。Android的事件处理有基于回调机制的处理方法和基于监听接口事件处理方法;从另一个角度来看,有使用事件监听器(Event Listeners,它就是一个在View类中的接口,包括一个单独的回调函数)来处理事件的,也有的是使用Event Handlers来处理事件的。常见的事件监听器方法有:1.View.OnClickListener():当前View被点击时,或者当前View获得焦点时,或在用户按下轨迹球后调用这个方法,并触发其中的onClick(View v)方法。2.View.OnFocusChangeListener():当前View焦点变化时该方法被调用,并触发
7、其中的onFocusChange()方法。3.View.OnKeyListener():当前组件获得焦点,或者用户按下键时,调用该方法,并触发其中的onKey()方法。4.View.OnTouchListener():当触摸事件传递给当前组件时,注册在当前组件内部的OnTouchListener会被执行并触发其中的onTouch()方法。5.3 Android5.3 Android中的事件处理机制中的事件处理机制5.3.1基于回调机制的事件处理回调就是客户程序Client调用服务程序Service中的某个函数A,然后Service又在某个时候反过来调用Client中的某个函数B,Server会
8、约定B的接口规范。Web Service以及Java的RMI都用到回调机制,可以访问远程服务器程序。在Android中,每个View都有自己处理事件的回调方法。开发人员可以通过重写View中的这些回调方法来实现需要的响应事件,当某个事件没有被任何一个View处理时,便会调用Activity中相应的回调方法。5.3 Android5.3 Android中的事件处理机制中的事件处理机制5.3.1基于回调机制的事件处理通过onKeyDown方法捕获按键onKeyDown方法用于捕获手机键盘被按下的事件,其构造函数如下:public boolean onKeyDown(int KeyCode,KeyE
9、vent event)示例工程中的onKeyDown实例演示了通过onKeyDown方法来监听被按下的按键信息并将其记录在Log中的方法,这个Log文件可以通过DDMS中的LogCat观测到。5.3 Android5.3 Android中的事件处理机制中的事件处理机制public class onKeyDown_MainActivity extends Activity MyButton button1;/自定义类MyButton的实例botton2public final String Mylog=我的日志记录是:;/在DDMS的Filter中过滤显示 Override public voi
10、d onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);button1=new MyButton(this);/创建一个自定义的MyButtonbutton1.setText(我自己的按钮);button1.setTextSize(30);/设置文字大小setContentView(button1);/显示按钮 onKeyDownonKeyDown案例案例class MyButton extends Button /定义MyButton类,扩展自Buttonpublic MyButton(Context c
11、ontext)super(context);public boolean onKeyDown(int keyCode,KeyEvent event)Time t=new Time();t.setToNow();Log.d(Mylog,Current time is:+t.toString()+And the current keyCode is:+keyCode+,KeyEvent is:+event);return super.onKeyDown(keyCode,event);通过通过DDMSDDMS中的中的FilterFilter来查看设定的来查看设定的LogLog信息信息5.3.1基于回
12、调机制的事件处理onTouchEvent方法:这个方法一般出现在Activity中的位置是在onCreate(Bundle savedInstanceState)方法之后,在定义public boolean onTouchEvent(MotionEvent event)方法中,根据侦听得到的不同情况分别处理之。该方法可以在View中或Activity中重写。应用程序可以通过该方法处理手机屏幕的触摸事件。5.3 Android5.3 Android中的事件处理机制中的事件处理机制public class onTouchEventMethodDemo_Activity extends Activi
13、ty MyOwnView myownview;/MyOwnView类定义见下方 Override public void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);myownview=new MyOwnView(this);/初始化自定义的View setContentView(myownview);/此处是自定义的view public boolean onTouchEvent(MotionEvent event)switch(event.getAction()case MotionEvent.
14、ACTION_DOWN:/屏幕被按下 myownview.x=(int)event.getX();/改变x坐标 myownview.y=(int)event.getY();OnTouchEVentOnTouchEVent案例案例myownview.postInvalidate();break;case MotionEvent.ACTION_MOVE:/移动 myownview.x=(int)event.getX();/改变x坐标 myownview.y=(int)event.getY();myownview.postInvalidate();break;case MotionEvent.ACT
15、ION_UP:/屏幕被抬起 myownview.x=-1;/改变X坐标为可见区域外,意为不显示 myownview.y=-1;/改变Y坐标为可见区域外,意为不显示 myownview.postInvalidate();break;return super.onTouchEvent(event);class MyOwnView extends View Paint paint;int x=30;int y=30;public MyOwnView(Context context)super(context);paint=new Paint();Override protected void onD
16、raw(Canvas canvas)paint.setColor(Color.RED);/设置画笔颜色 paint.setTextSize(20);/设置字体大小 paint.setStyle(Paint.Style.FILL);/设置实心字 paint.setStrokeWidth(2);/设置空心外框宽度 canvas.drawColor(Color.BLUE);/设置画布背景色 String mystring=你 好;canvas.drawText(mystring,x,y,paint);super.onDraw(canvas);运行效果运行效果5.3.1基于回调机制的事件处理onFoc
17、usChanged方法:该方法只能在View中重写。该方法是焦点改变的回调方法,当焦点发生改变时会自动调用该方法来处理焦点改变的事件。该方法构造函数如下:protected void onFocusChanged(boolean gainFocus,int direction,Rect previouslyFocusedRect)5.3 Android5.3 Android中的事件处理机制中的事件处理机制public class onFocusChangedEventMethodDemo_MainActivity extends Activity MyOwnButton button1;MyO
18、wnButton button2;MyOwnButton button3;public final String Mylog=onFocusChanged日志:;Override public void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);button1=new MyOwnButton(this);/初始化第一个按钮 button1.setId(1);button1.setGravity(Gravity.LEFT);/文字位于左 button1.setText(MyOwnButton1);b
19、utton2=new MyOwnButton(this);/初始化第二个按钮onFocusChangedonFocusChanged案例案例button2.setText(MyOwnButton2);button2.setGravity(Gravity.CENTER_HORIZONTAL);/文字中 button3=new MyOwnButton(this);/初始化第一个按钮 button3.setText(MyOwnButton3);button3.setGravity(Gravity.RIGHT);/文字位于右 TableLayout mylayout=new TableLayout(t
20、his);/创建布局 mylayout.setBackgroundColor(Color.CYAN);/背景色 mylayout.setColumnCollapsed(0,true);mylayout.addView(button1);/加入view中,下同 mylayout.addView(button2);mylayout.addView(button3);setContentView(mylayout);/显示 class MyOwnButton extends Button public MyOwnButton(Context context)/定义构造器 super(context)
21、;setTextColor(Color.BLUE);setTextSize(24.0f);Override protected void onFocusChanged(boolean focused,int direction,Rect previouslyFocusedRect)Log.d(Mylog,Button+this.getText()+,focused=+focused+,direction=+direction+,previouslyFocusedRect=+previouslyFocusedRect);super.onFocusChanged(focused,direction
22、,previouslyFocusedRect);运行效果运行效果5.3.2基于监听接口的事件处理将事件源与事件监听器联系在一起,就需要为事件源注册监听事件。当事件发生时,系统自动通知事件监听器处理相应的事件。主要步骤有:为事件源对象添加监听。当事件发生时,系统会将事件封装成相应类型的事件对象并发送给注册到事件源的事件监听器。当监听器对象接收到事件对象之后,会调用监听器中相应的事件处理方法来处理事件并给出响应。5.3 Android5.3 Android中的事件处理机制中的事件处理机制5.3.2基于监听接口的事件处理onClick():该接口处理的是点击事件。在触控模式下它是在某个View上按下
23、并抬起的组合动作;在键盘模式下它是某个View获得焦点后点击确定键或者按下轨迹球的事件。该接口对应的回调方法如下:public void onClick(View v)/注:参数v就是事件发生的事件源5.3 Android5.3 Android中的事件处理机制中的事件处理机制public class onClickMethodDemo_MainActivity extends Activity implements OnClickListener/注意要implements OnClickListener private final int mystyle=ViewGroup.LayoutPa
24、rams.WRAP_CONTENT;/显示风格 private int count1=0;/定义变量,后同 private int count2=0;private Button button1;private Button button2;Override protected void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);LinearLayout linearLayout=new LinearLayout(this);/线性布局 linearLayout.setOrientation(Li
25、nearLayout.VERTICAL);/垂直布局OnclickOnclick案例案例 setContentView(linearLayout);/采用设定的布局 button1=new Button(this);button1.setText(按钮1);button1.setOnClickListener(this);linearLayout.addView(button1,new LinearLayout.LayoutParams(mystyle,mystyle);/在布局中显示按钮1 button2=new Button(this);button2.setText(按钮2);butto
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中职 Android智能手机软件开发教程第5章电子课件 高教版 Android 智能手机 软件 开发 教程 电子 课件 高教
限制150内