当前位置:文档之家› Android实验5 事件处理答案

Android实验5 事件处理答案

Android实验5 事件处理答案
Android实验5 事件处理答案

一、实验名称:实验5 事件处理

二、实验日期:

三、实验目的:

◆基于监听的事件处理

◆基于回调的事件处理

四、实验用的仪器和材料:Windows+Eclipse+jdk+sdk+adt

五、实验的步骤和方法:

实验一:基于监听的事件处理机制

Activity.java

package com.my;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

public class Week05Activity extends Activity implements OnClickListener{

EditText txt;

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(https://www.doczj.com/doc/7a2929895.html,yout.main);

//获取button对象

Button btn1 = (Button)findViewById(R.id.button1);

Button btn2 = (Button)findViewById(R.id.button2); Button btn3 = (Button)findViewById(R.id.button3); Button btn4 = (Button)findViewById(R.id.button4); Button btn5 = (Button)findViewById(R.id.button5);

//获取edittext对象

txt = (EditText)findViewById(R.id.edittext);

//定义一个单击事件的监听器(内部类)

class MyClickListener implements OnClickListener{ public void onClick(View v) {

EditText txt =

(EditText)findViewById(R.id.edittext);

txt.setText("内部类");

}

}

//定义一个单击事件的监听器(外部类)

class ExtentEvent implements OnClickListener{

private Activity act;

private EditText txt;

public ExtentEvent(Activity act,EditText txt){

this.act=act;

this.txt=txt;

}

public void onClick(View v) {

txt.setText("外部类");

}

}

//为按钮绑定事件监听(内部类)

btn1.setOnClickListener(new MyClickListener());

//为按钮绑定事件监听(外部类)

btn2.setOnClickListener(new ExtentEvent(this,txt));

//直接使用Activity作为事件监听器

btn4.setOnClickListener(this);

//匿名内部类

btn3.setOnClickListener(new OnClickListener(){ public void onClick(View v) {

txt.setText("匿名内部类");

}

});

}

//直接绑定到标签

public void clickHandler(View source){

EditText et = (EditText)findViewById(R.id.edittext);

et.setText("绑定到标签");

}

//Activity本身作为事件监听起器类,实现的事件处理方法

public void onClick(View v) {

txt.setText("Activity");

}

}

Main.xml

xmlns:android="https://www.doczj.com/doc/7a2929895.html,/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical">

android:id="@+id/edittext"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:hint="点击按钮显示相应的内容"

/>

android:id="@+id/button1"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="内部类"/>

android:id="@+id/button2"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="外部类"/>

android:id="@+id/button3"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="匿名内部类"/>

android:id="@+id/button4"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="Activity"/>

android:id="@+id/button5"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="绑定到标签"/>

实验二:基本回调的事件处理机制的程序

MyButton.java

package https://www.doczj.com/doc/7a2929895.html,b02;

import android.content.Context;

import android.util.AttributeSet;

import android.util.Log;

import android.view.KeyEvent;

import android.widget.Button;

public class MyButton extends Button{

public MyButton(Context context , AttributeSet set){ super(context , set);

}

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) { super.onKeyDown(keyCode , event);

Log.v("com.sise" , "the onKeyDown in MyButton");

//返回true,表明该事件不会向外扩散

return true;

}

}

Main.xml

xmlns:android="https://www.doczj.com/doc/7a2929895.html,/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical">

android:id="@+id/bn"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="单击我" />

实验三:通过Configuration类来获取系统配置信息

Activity.java

package https://www.doczj.com/doc/7a2929895.html,b03;

import https://www.doczj.com/doc/7a2929895.html,b02.R;

import android.app.Activity;

import android.os.Bundle;

import android.content.res.Configuration;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

public class week05_03Activity extends Activity { EditText ori;

EditText navigation;

EditText touch;

EditText mnc;

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(https://www.doczj.com/doc/7a2929895.html,yout.main);

// 获取应用界面中的界面组件

ori = (EditText) findViewById(R.id.ori);

navigation = (EditText) findViewById(R.id.navigation);

touch = (EditText) findViewById(R.id.touch);

mnc = (EditText) findViewById(R.id.mnc);

Button bn = (Button) findViewById(R.id.bn);

// 为按钮绑定事件监听器

bn.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

// 获取系统的Configuration对象

Configuration cfg =

getResources().getConfiguration();

String screen = cfg.orientation == Configuration.ORIENTATION_LANDSCAPE ?

"横向屏幕": "竖向屏幕";

String mncCode = cfg.mnc + "";

String naviName = cfg.orientation == Configuration.NAVIGATION_NONAV ? "没有方向控制": cfg.orientation == Configuration.NAVIGATION_WHEEL ? "滚轮控制方向":

cfg.orientation == Configuration.NAVIGATION_DPAD ? "方向键控制方向": "轨迹球控制方向";

navigation.setText(naviName);

String touchName = cfg.touchscreen == Configuration.TOUCHSCREEN_NOTOUCH ? "无触摸屏": cfg.touchscreen == Configuration.TOUCHSCREEN_STYLUS ? "触摸笔式触摸屏": "接受手指的触摸屏";

ori.setText(screen);

mnc.setText(mncCode);

touch.setText(touchName);

}

});

}

}

Main.xml

xmlns:android="https://www.doczj.com/doc/7a2929895.html,/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:gravity="center_horizontal">

android:id="@+id/ori"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:editable="false"

android:cursorVisible="false"

android:hint="显示屏幕方向"/>

android:id="@+id/navigation"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:editable="false"

android:cursorVisible="false"

android:hint="显示手机方向控制设备"/>

android:id="@+id/touch"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:editable="false"

android:cursorVisible="false"

android:hint="显示触摸屏状态"/>

android:id="@+id/mnc"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:editable="false"

android:cursorVisible="false"

android:hint="显示移动网络代号"/>

android:id="@+id/bn"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="获取手机信息"/>

实验四:掌握Handler的使用

Activity.java

package https://www.doczj.com/doc/7a2929895.html,b04;

import android.app.Activity;

import android.app.Dialog;

import android.app.ProgressDialog;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.view.View;

import android.view.View.OnClickListener; import android.widget.Button;

public class Week05_04Activity extends Activity { // 该程序模拟填充长度为100的数组

private int[] data = new int[100];

int hasData = 0;

// 定义进度对话框的标识

final int PROGRESS_DIALOG = 0x112;

// 记录进度对话框的完成百分比

int progressStatus = 0;

ProgressDialog pd;

// 定义一个负责更新的进度的Handler

Handler handler;

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(https://www.doczj.com/doc/7a2929895.html,yout.main);

Button execBn = (Button) findViewById(R.id.exec);

execBn.setOnClickListener(new OnClickListener() { public void onClick(View source) {

showDialog(PROGRESS_DIALOG);

}

});

//Handler消息处理,请补全代码,是多行。

handler = new Handler(){

public void handleMessage(Message msg){

if(msg.what == 0x11)//这个数字随意

pd.setProgress(progressStatus);

}

};

}

@Override

public Dialog onCreateDialog(int id, Bundle status) { System.out.println("------create------");

switch (id) {

case PROGRESS_DIALOG:

// 创建进度对话框

pd = new ProgressDialog(this);

pd.setMax(100);

// 设置对话框的标题

pd.setTitle("任务完成百分比");

// 设置对话框显示的内容

pd.setMessage("耗时任务的完成百分比");

// 设置对话框不能用“取消”按钮关闭

pd.setCancelable(false);

// 设置对话框的进度条风格

pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

// 设置对话框的进度条是否显示进度

pd.setIndeterminate(false);

break;

}

return pd;

}

// 该方法将在onCreateDialog方法调用之后被回调

@Override

public void onPrepareDialog(int id, Dialog dialog) {

System.out.println("------prepare------");

super.onPrepareDialog(id, dialog);

switch (id) {

case PROGRESS_DIALOG:

// 对话框进度清零

pd.incrementProgressBy(-pd.getProgress());

new Thread() {

public void run() {

while (progressStatus < 100) {

// 获取耗时操作的完成百分比

progressStatus = doWork();

// 发送消息到Handler,请补全代码

Message msg = new Message();

msg.what=0x11;//与上面的保持一致

handler.sendMessage(msg);

}

// 如果任务已经完成

if (progressStatus >= 100) {

// 关闭对话框

pd.dismiss();

}

}

}.start();

break;

}

}

// 模拟一个耗时的操作。

public int doWork() {

// 为数组元素赋值

data[hasData++] = (int) (Math.random() * 100);

try {

Thread.sleep(100);

} catch (InterruptedException e) {

e.printStackTrace();

}

return hasData;

}

}

Main.xml

xmlns:android="https://www.doczj.com/doc/7a2929895.html,/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical">

android:id="@+id/exec"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="执行任务" />

六、数据记录和计算:指从实验中测到的数据以及计算结果。

七、实验结果或结论:

实验一:

实验二:

实验三:

实验四:

八、备注或说明:实验完成的比较顺利。熟悉掌握了几种常用的事件处理的方法。

九、引用参考文献:即在本实验中所引用的之資料。

例如:1〃王月云、陈是莹、童武夫。1994。植物生理学实验。艺軒图书出版社。286頁。

安卓按钮单击事件

第一种:匿名内部类作为事件监听器类 大部分时候,事件处理器都没有什么利用价值(可利用代码通常都被抽象成了业务逻辑方法),因此大部分事件监听器只是临时使用一次,所以使用匿名内部类形式的事件监听器更合适,实际上,这种形式是目前是最广泛的事件监听器形式。上面的程序代码就是匿名内部类来创建事件监听器的!!! 对于使用匿名内部类作为监听器的形式来说,唯一的缺点就是匿名内部类的语法有点不易掌握,如果读者java基础扎实,匿名内部类的语法掌握较好,通常建议使用匿名内部类作为监听器。 第二种:内部类作为监听器 将事件监听器类定义成当前类的内部类。1、使用内部类可以在当前类中复用监听器类,因为监听器类是外部类的内部类,2、所以可以自由访问外部类的所有界面组件。这也是内部类的两个优势。上面代码就是内部类的形式!! 第三种:Activity本身作为事件监听器

这种形式使用activity本身作为监听器类,可以直接在activity类中定义事件处理器方法,这种形式非常简洁。但这种做法有两个缺点:(1)这种形式可能造成程序结构混乱。Activity 的主要职责应该是完成界面初始化;但此时还需包含事件处理器方法,从而引起混乱。(2)如果activity界面类需要实现监听器接口,让人感觉比较怪异。 上面的程序让Activity类实现了OnClickListener事件监听接口,从而可以在该Activity类中直接定义事件处理器方法:onClick(view v),当为某个组件添加该事件监听器对象时,直接使用this作为事件监听器对象即可。 第四种:外部类作为监听器 ButtonTest类 当用户单击button按钮时,程序将会触发MyButtonListener监听器 外部MyButtonListener类

android实验报告

创建一个名为“登录页面”的布局文件,该文件用于展示登录信息。程序界面如下图所示:; public class Activity01 extends Activity { EditText name; EditText pass ; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); public void click(View view){ Intent intent1=new Intent(this,Mylayout1MainActivity.class); startActivity(intent1);} public void click1(View view){ SharedPreferences sf1=getSharedPreferences("account",Context.MODE_PRIVATE); String name1=sf1.getString("name",""); String pass1=sf1.getString("pass",""); String name2=name.getText().toString(); String pass2=pass.getText().toString(); if(name1.equals(name2)&&pass1.equals(pass2)){ Intent intent2=new Intent(this, Textview1.class); intent2.putExtra("name", name1);

AndroidUI基本控件与事件处理

《Android基础应用》 AndroidUI基本控件与事件处理 ?本章任务 ?使用Android开发本息计算器程序 ?使用Android开发华氏-摄氏温度转换器 ?本章目标 ?熟悉掌握本章基本控件的使用 ?熟练掌握Android常用事件 1.Android基本控件 Android应用开发的一项内容就是用户界面的开发,Android提供了大量功能丰富的UI组件,大部分放在android.widget包及其子包android.view包及其子包 在Android当中View类是最基本的一个UI类,基本上所有的高级UI组件都是继承View类而实现的。如Button(按钮),list(列表),EditText(编辑框),RadioButton(多选按钮),Checkbox(选择框)等都是View类 在Android中,我们可以在Xml文件中使用UI组件也可以在java文件中创建UI组件官方建议采用xml方式,这样的话能够实现界面和代码分离 1.1TextView和EditText TextView是一种用于显示字符串的控件 EditText则是用来输入和编辑字符串的控件,EditText是一个具有编辑功能的TextView

TextView和EditText基本属性 ●android:id设置ID,通过编码可以找到这个组件 ●android:layout_width设置在屏幕上的宽度 ●android:layout_height设置在屏幕上的高度 fill_parent强制性地使构件扩展,以填充布局单元内尽可能多的空间 wrap_content强制性地使视图扩展以显示全部内容 ●android:text设置显示的文本信息 ●android:textColor设置文本颜色 ●android:textSize设置文本尺寸

基于android开发实验报告总结

基于android开发实验 报告总结 组员: 指导老师: 2016.12.15

目录 实验一 Android开发环境的搭建 (3) 1 实验目的及要求 (3) 2 实验设备(环境)及要求 (3) 3 实验内容 (3) 4 实验步骤 (3) 5 实验核心代码(关键代码),及调试中的问题 (4) 6 实验的运行结果及分析 (9) 3 实验设备(环境)及要求 (10) 实验三 GUI创建套件Widget的使用 (18) 1 实验目的及要求 (18) 2 实验设备(环境)及要求 (18) 3 实验内容 (19) 4 实验步骤 (19) 5 实验核心代码(关键代码),及调试中的问题 (19) 6 实验的运行结果及分析 (28) 实验四 SQLite应用 (29) 1 实验目的及要求 (29) 2 实验设备(环境)及要求 (30) 3 实验内容 (30) 4 实验步骤 (30) 5 实验核心代码(关键代码),及调试中的问题 (30) 6 实验的运行结果及分析 (41)

实验一 Android开发环境的搭建 1 实验目的及要求 1.搭建Eclipse+Android开发平台 2.创建简单的Android应用程序 3.创建Activity并利用intent的实现Activity的跳转 2 实验设备(环境)及要求 1)PC计算机 2)JDK安装包 3)Eclipse安装包 4)Android SDK安装包 5)ADT插件 3 实验内容 1)搭建Eclipse+Android开发环境 2)创建一个简单的”hello world”工程 3)创建两个Activity,实现简单的Activity之间的参数传递 4 实验步骤 1)下载安装JDK 1.6,配置环境变量,如果所示。

Android实验一实验报告

Android实验报告一 姓名:丁军峰 班级:信科12-3 学号:08123448

一、实验内容 编写一个Android应用程序,实现对自己物品的管理,功能包括添加、删除和查询等 二、实验目的 了解android开发流程,掌握SQLite数据库和ListView控件的使用三、需求分析 使用SQLite数据库,使用ListView控件显示物品 四、实验过程 1.创建程序,设计用户交互界面

Android OnTouchListener触屏事件接口

Android OnTouchListener触屏事件接口 OnTouchListener接口是用来处理手机屏幕事件的监听接口,当为View的范围内触摸按下、抬起或滑动等动作时都会触发该事件。该接口中的监听方法签名如下。 Java代码: public boolean onT ouch(View v, MotionEvent event) 参数v:参数v同样为事件源对象。 参数event:参数event为事件封装类的对象,其中封装了触发事件的详细信息,同样包括事件的类型、触发时间等信息。 节中介绍了一个在屏幕中拖动矩形移动的案例,本节将继续采用该案例的思路,通过监听接口的方式实现在屏幕上拖动按钮移动的案例。开发步骤如下。 创建一个名为Sample的Android项目。 准备字符串资源,打开strings.xml文件,用下列代码替换原有代码。 Java代码: Hello World, Sample Sample 位置 说明:与前面介绍的案例相同,对程序中用到的字符串资源进行定义。 开发布局文件。打开res/layout目录下的main.xml,用下列代码替换其原有代码。

Java代码:

相关文档 最新文档