欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    中职 Android智能手机软件开发教程第5章电子课件 高教版 .ppt

    • 资源ID:90590128       资源大小:4.30MB        全文页数:68页
    • 资源格式: PPT        下载积分:30金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要30金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    中职 Android智能手机软件开发教程第5章电子课件 高教版 .ppt

    第第5 5章章 Android Android事件处理机制事件处理机制与常用与常用WidgetWidget组件应用组件应用掌握常见的事件监听器方法,掌握View被点击、获得焦点等时调用的View.OnClickListener里的onClick()方法、View.OnKeyListener里的onKey()方法等相关的事件监听器方法。掌握常见的widget组件及其使用方式。Android Widget是Android SDK 1.5之后新加入的一个开发框架。相当于Windows的小插件,可以嵌入到手机应用程序中的人机交互界面上。常见的有:显示字符串的TextView控件自动完成AutoCompleteTextView控件按钮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 Button5.2 Button加载线性布局。linearLayout=new LinearLayout(this);/实例化对象linearLayout.setOrientation(LinearLayout.VERTICAL);/垂直linearLayout.setBackgroundColor(Color.GRAY);/背景setContentView(linearLayout);/加载上述设定的布局linearLayoutParams=new LinearLayout.LayoutParams(myparams,myparams);ButtonButton案例案例处理按钮点击事件时,调用按钮的setOnClickListener()方法,并把View.OnClickListener的实例作为参数传入。在View.OnClickListener的onClick()方法里,取得被点击按钮的实例。通过侦听Button被单击的事件(利用OnClickListener函数),可以完成相应的功能。5.2.2 侦听按钮被单击的动作侦听按钮被单击的动作Button button1;/定义Button实例TextView myshow;/定义TextView实例Overridepublic void onCreate(Bundle savedInstanceState)/重写的onCreate方法super.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用户与应用程序之间的交互是通过事件处理来完成的。Android的事件处理有基于回调机制的处理方法和基于监听接口事件处理方法;从另一个角度来看,有使用事件监听器(Event Listeners,它就是一个在View类中的接口,包括一个单独的回调函数)来处理事件的,也有的是使用Event Handlers来处理事件的。常见的事件监听器方法有:1.View.OnClickListener():当前View被点击时,或者当前View获得焦点时,或在用户按下轨迹球后调用这个方法,并触发其中的onClick(View v)方法。2.View.OnFocusChangeListener():当前View焦点变化时该方法被调用,并触发其中的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会约定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,KeyEvent 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 void 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 context)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基于回调机制的事件处理onTouchEvent方法:这个方法一般出现在Activity中的位置是在onCreate(Bundle savedInstanceState)方法之后,在定义public boolean onTouchEvent(MotionEvent event)方法中,根据侦听得到的不同情况分别处理之。该方法可以在View中或Activity中重写。应用程序可以通过该方法处理手机屏幕的触摸事件。5.3 Android5.3 Android中的事件处理机制中的事件处理机制public class onTouchEventMethodDemo_Activity extends Activity 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.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.ACTION_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 onDraw(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基于回调机制的事件处理onFocusChanged方法:该方法只能在View中重写。该方法是焦点改变的回调方法,当焦点发生改变时会自动调用该方法来处理焦点改变的事件。该方法构造函数如下:protected void onFocusChanged(boolean gainFocus,int direction,Rect previouslyFocusedRect)5.3 Android5.3 Android中的事件处理机制中的事件处理机制public class onFocusChangedEventMethodDemo_MainActivity extends Activity MyOwnButton button1;MyOwnButton 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);button2=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(this);/创建布局 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);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,previouslyFocusedRect);运行效果运行效果5.3.2基于监听接口的事件处理将事件源与事件监听器联系在一起,就需要为事件源注册监听事件。当事件发生时,系统自动通知事件监听器处理相应的事件。主要步骤有:为事件源对象添加监听。当事件发生时,系统会将事件封装成相应类型的事件对象并发送给注册到事件源的事件监听器。当监听器对象接收到事件对象之后,会调用监听器中相应的事件处理方法来处理事件并给出响应。5.3 Android5.3 Android中的事件处理机制中的事件处理机制5.3.2基于监听接口的事件处理onClick():该接口处理的是点击事件。在触控模式下它是在某个View上按下并抬起的组合动作;在键盘模式下它是某个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.LayoutParams.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(LinearLayout.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);button2.setOnClickListener(this);linearLayout.addView(button2,new LinearLayout.LayoutParams(mystyle,mystyle);/在布局中显示按钮2 public void onClick(View v)if(v=button1)count1+;if(count1=5)finish();/退出 else button1.setText(被单击次数是:+count1);if(v=button2)count2+;if(count2=5)finish();/退出 else button2.setText(被单击次数是:+count2);运行效果运行效果5.3.2基于监听接口的事件处理onKeyListener:OnKeyListener()是对手机键盘进行监听的接口。通过对某个View进行监听,当该View获得焦点并有按键操作时,触发该接口中的回调方法。OnKeyListener()的构造函数是:public boolean OnKey(View v,int KeyCode,KeyEvent event)5.3 Android5.3 Android中的事件处理机制中的事件处理机制package com.onKeyListenerMethodDemo;import android.app.Activity;import android.os.Bundle;import android.view.KeyEvent;import android.view.View;import android.view.View.OnClickListener;/单击时触发监听的接口方法import android.view.View.OnKeyListener;/按键时触发监听的接口方法import android.widget.ImageButton;public class onKeyListenerMethodDemo_Activity extends Activity implements OnKeyListener,OnClickListener/因为要同时侦听单击和按键事件,故本Activity需要implements OnKeyListener,OnClickListener OnKeylistenerOnKeylistener案例案例/因为要同时侦听单击和按键事件,故本Activity需要implements OnKeyListener,OnClickListener ImageButton imageButtons=new ImageButton3;/声明3个按钮数组,当然也可以分别实例化之Override public void onCreate(Bundle savedInstanceState)/重写此Activity的onCreate事件 super.onCreate(savedInstanceState);this.setContentView(R.layout.main);/采用main.xml布局文件 imageButtons0=(ImageButton)this.findViewById(R.id.button01);/imageButtons0对应第一个按钮 imageButtons1=(ImageButton)this.findViewById(R.id.button02);/imageButtons1对应第二个按钮 imageButtons2=(ImageButton)this.findViewById(R.id.button03);/imageButtons2对应第三个按钮 /下面是为事件源对象添加监听,但尚未定义具体的事件处理方法 for(ImageButton imageButton:imageButtons)imageButton.setOnClickListener(this);/单击时触发监听 imageButton.setOnKeyListener(this);/按键时触发监听 /定义具体的事件(此处是单击事件)的处理方法public void onClick(View v)switch(v.getId()case R.id.button01:this.setTitle(飞翔的小鸟!);break;case R.id.button02:this.setTitle(我们的家园!);break;case R.id.button03:this.setTitle(我是小熊维尼!);break;/定义具体的事件(此处是按键事件)的处理方法public boolean onKey(View v,int keyCode,KeyEvent event)switch(keyCode)/判断键盘码case 29:/按键A或回车imageButtons0.performClick();/模拟单击imageButtons0.requestFocus();/尝试使之获得焦点setTitle(您点击了A键);break;case 30:/按键B或回车imageButtons1.performClick();/模拟单击imageButtons1.requestFocus();/尝试使之获得焦点setTitle(您点击了B键);break;case 31:/按键C或回车imageButtons2.performClick();/模拟单击imageButtons2.requestFocus();/尝试使之获得焦点setTitle(您点击了C键);break;return false;运行效果运行效果5.4.1 TextViewTextView:常常用于在Activity上设置显示文字。常用方法如下:设置文字到TextView时调用setText()方法。取得TextView的文字时调用getText()方法。如:TextView textView=(TextView)findViewById(ID号);textView.setText(getString(R.string.hello);Log.d(Test,String.valueOf(textView.getText();5.45.4 TextView与与EditTextpublic class WordStyleDemo_MainActivity extends Activity final int myparams=ViewGroup.LayoutParams.WRAP_CONTENT;/定义样式参数private private TextViewTextView my1,my2,my3;/my1,my2,my3;/定义三个定义三个TextViewTextView对象对象private LinearLayout linearLayout;/线性布局类的实例private LinearLayout.LayoutParams linearLayoutParams;/线性布局参数实例Override public void onCreate(Bundle savedInstanceState)/ch重写onCreate()方法 super.onCreate(savedInstanceState);linearLayout=new LinearLayout(this);/实例化一个LinearLayout对象 linearLayout.setOrientation(LinearLayout.HORIZONTAL);/水平布局 linearLayout.setBackgroundColor(Color.BLACK);/设置背景色setContentView(linearLayout);/加载上述设定的布局,而非默认的XML布局文件TextViewTextView案例案例 linearLayoutParams=new LinearLayout.LayoutParams(myparams,myparams);constructTextView();/自定义的代码见后 add();public void constructTextView()/实例化多个TextView对象my1=new my1=new TextView(thisTextView(this););my1.setId(1);/my1.setId(1);/设置其设置其IDIDmy1.setTextSize(18.0f);/my1.setTextSize(18.0f);/设置文字大小设置文字大小my1.setText(BeiJing);/my1.setText(BeiJing);/设置文字内容设置文字内容my1.setTypeface(null,my1.setTypeface(null,Typeface.BOLDTypeface.BOLD);/);/设置文字字体设置文字字体my1.setTextColor(Color.BLUE);/my1.setTextColor(Color.BLUE);/设置文字颜色设置文字颜色my2=new TextView(this);my2.setTextSize(20.0f);my2.setText(Dubai);my2.setTypeface(null,Typeface.BOLD_ITALIC);my2.setTextColor(Color.CYAN);my3=new TextView(this);my3.setTextSize(18.0f);my3.setText(London);my3.setTypeface(null,Typeface.ITALIC);my3.setTextColor(Color.GREEN);public void add()/以设定的布局参数(WRAP_CONTENT)添加三个TextView实例到布局中linearLayout.addView(my1,linearLayoutParams);linearLayout.addView(my2,linearLayoutParams);linearLayout.addView(my3,linearLayoutParams);TextView textView=(TextView)findViewById(1);/得到ID为1的textviewtextView.setText(getString(R.string.hello);Log.d(Test,String.valueOf(textView.getText();运行效果运行效果5.4.2 EditTextEditText相当于VC+、C#中的EditBox控件,常常用于在Activity上接受用户从键盘输入的内容。EditText中可以接受用户从键盘输入的信息。有关EditText的常用方法有:设置EditText时,调用setText()方法。取得EditText文字时,调用getText()方法。选择EditText文字时,调用selectAll()方法。5.45.4 TextView与与EditTextpackage com.editer;import android.app.Activity;import android.os.Bundle;import android.widget.EditText;/注意添加import android.widget.TextView;import android.util.Log;public class Editer_Activity extends Activity Override public void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.main);/布局文件 (TextView)findViewById(R.id.myedittext).setText(R.string.hello);/用设定信息显示TextViewEditTextEditText案例案例 EditText editText=(EditText)findViewById(R.id.myedittext);editText.setText(getString(R.string.hello);editText.selectAll();Log.d(Test,String.valueOf(editText.getText();5.4.3 TextView与EditText联合使用案例中,需注意如下几点:在XML布局文件中设置Widget控件显示属性,如EditText以密码方式显示、设定其hint提示信息等。myet1=(EditText)findViewById(R.id.myEditText);将在XML中定义的EditText组件(有确定的ID)与EditText实例(此处为myet1)建立关系。用setOnKeyListener(new EditText.OnKeyListener()函数来捕获EditText按键动作。在函数体中,通过调用mytv1.setText(myet1.getText().toString();将用户在EditText中的输入作为TextView的内容。5.45.4 TextView与与EditTextimport android.app.Activity;import android.os.Bundle;import android.view.KeyEvent;import android.view.View;import android.widget.EditText;import android.widget.TextView;public class TextViewandEditText_MainActivity extends Activity private TextView mytv1;/private TextView mytv1;/添加实例添加实例 private EditText myet1;/private EditText myet1;/添加实例添加实例 Override public void onCreate(Bundle savedInstanceState)/重写onCreate()方法 super.onCreate(savedInstanceState);setContentView(R.layout.hello_activity);/setContentView(R.layout.hello_activity);/采用采用XMLXML布局模板布局模板 mytv1=(mytv1=(TextViewTextView)findViewById(R.id.myTextViewfindViewById(R.id.myTextView););myet1=(myet1=(EditTextEditText)findViewById(R.id.myEditTextfindViewById(R.id.myEditText););myet1.setOnKeyListener(new myet1.setOnKeyListener(new EditText.OnKeyListenerEditText.OnKeyListener()/()/捕获捕获EditTextEditText按键按键 public public booleanboolean onKey(ViewonKey(View tvtv,intint keyCodekeyCode,KeyEventKeyEvent event)event)mytv1.setText(myet1.getText().toString();/用在输入框中输入的字符作为TextView中的内容 return false;);运行效果CheckBox是一个同时可以选择多个选项的Widget控件。有关CheckBox的主要方法有:设置复选框的Check状态时,调用setChecked()方法(参数为true时为选中,为false时为未选中)。处理复选框被选择时的逻辑时,调用setOnCheckedChangeListener()方法,并把CompoundButton.OnCheckedChangeListener实例作为参数传入,在CompoundButton.OnCheckedChangeListener的onCheckedChanged()方法里,取得被选中复选框实例。5.5 CheckBox5.5 CheckBoxpublic class CheckBoxDemo2_MainActivity extends Activity private String myresults=;private CheckBox my1,my2,my3;Overridepublic void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.main);my1=(CheckBox)findViewById(R.id.mychoose1);/使my1指向id号为mychoose1的CheckBoxmy1.setChecked(true);/默认为选中状态my2=(CheckBox)findViewById(R.id.mychoose2 my2.setChecked(true);/默认为选中状态my3=(CheckBox)findViewById(R.id.mychoose3);my1.setOnCheckedChangeListener(CheckedChangeListener);CheckBoxCheckBox案例案例

    注意事项

    本文(中职 Android智能手机软件开发教程第5章电子课件 高教版 .ppt)为本站会员(春哥&#****71;)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开