logo资料库

Android期中考试试题.doc

第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
资料共8页,全文预览结束
《Android 应用开发》期中考试 1、 简述 Android 应用程序结构是哪些? (5 分) 答:(1)一组 View(UI 组件)。这些组件包括列表(List)、文本框(textbox)、按钮(button) 等。通过这些 UI 组件可以构建应用程序的视图部分。 (2)Content Providers。它提供了一种机制,通过这种机制,应用程序可以实现数据的 互访和共享。 (3)Resource Manager。它负责管理非代码的访问。即资源文件的访问管理。 (4)Notification Manager。它能让程序将自己的警示信息显示在状态栏上。例如:当有 短信时,可以在状态栏上显示出新短信的信息。 (5)Activity Manager。它管理着应用的生命周期,并且提供了应用页面退出的机制。在 Android 应用中,每个应用一般由多个页面组成,而每个页面的单位就是 Activity。通俗 的说,Android 的应用是由多个 Activity 的交互构成的。 2、请描述下 Activity 的生命周期以及何时调用相应的生命周期。(5 分) 答:生命周期,Activity 有三个状态: (1)当它在屏幕前台时(位于当前任务堆栈的顶部),它是激活或运行状态。它就是响应 用户操作的 Activity。 (2)当它上面有另外一个 Activity,使它失去了焦点但仍然对用户可见时,它处于暂停状 态。在它之上的 Activity 没有完全覆盖屏幕,或者是透明的,被暂停的 Activity 仍然对用 户可见,并且是存活状态。如果系统处于内存不足时会杀死这个 Activity。 (3)当它完全被另一个 Activity 覆盖时则处于停止状态。它仍然保留所有的状态和成员信 息。然而对用户是不可见的,所以它的窗口将被隐藏,如果其它地方需要内存,则系统经常 会杀死这个 Activity。 调用相应的生命周期:Activity 从一种状态转变到另一种状态时,会调用以下保护方法来通 知 这 种 变 化 : onCreate(Bundle savedInstanceState), onStart(), onRestart(), onResume(), onPause(), onStop(), onDestroy(). 3、android 的四大组件是(5 分) 答:Activity(Android 的窗体)、Service(服务)、Broadcast Receiver(广播接收器)、 Content Provider(内容提供者) 4、请介绍下 Android 中常用的五种布局。(5 分) 答:(1)框架布局(FrameLayout,或称堆栈布局):所有添加到框架布局中的视图都是以 层叠的方式显示,这种显示方式类似堆栈。 (2)线性布局(LinerLayout):线性布局可分为水平线性布局和垂直线性布局。水平线 性布局所有在这个布局中的视图都沿着水平方向线性排列。垂直线性布局则沿着垂直方向线 性排列。 (3)相对布局(RelativeLayout):相对布局中可以设置某一个视图相对于其他视图的位
置,包括上、下、左、右。 (4)表格布局(TableLayout):表格布局可以将视图按行、按列进行排列。 (5)绝对布局(AbsoluteLayout):可以任意设置视图定位位置。 5、简述如何实现 Activity 的跳转,并写出主要代码。(20 分) 答:先根据控件的 ID 获取该控件,加一个监听器,实现一个接口,将监听器捆绑到控件上, 定义并生成一个 Intent 对象,调用 Intent 的 setClass 方法,实现使用一个 Activity 调用 另外一个 Activity,最后用 startActivity 方法启动跳转。主要源代码如下: // 创建一个 Activity public class Activity1 extends Activity { private Button btn = null; setContentView(R.layout.main); //显示相应的布局文件 btn = (Button)findViewById(R.id. btn); //根据控件 ID 获取控件 btn.setOnClickListener(new MyButtonListener()); //将监听器捆绑到控件上 } // 加一个监听器,实现一个接口 class MyButtonListener implements OnClickListener{ public void onClick(View v) { Intent intent = new Intent(); // 生成一个 Intent 对象 //调用 Intent 的 setClass 方法,实现使用一个 Activity 调用另外一个 Activity intent.setClass(Activity1.this, Activity2.class); Activity1.this.startActivity(intent); } 6、做一个较复杂的界面布局,画出来,每个部分用的什么控件,各个控件中你用到的属性 是什么,写出来。(20 分) 答:如有图所示。 (1) 使用框架布局,有两个层。底层背景图使用图片控 件(使用到的属性:宽 layout_weight,高 layoutheight, 图片控件 ImageView 图片控件 ImageView 对齐方式 layout_gravity)。 (2) 在顶层,使用垂直线性布局,将顶层分为三个 区,在第二个区放置一个用于显示图片信息 TextView(使 TextView(文本显示) 到的属性:宽 layout_weight,高 layoutheight,字体大 Button(按钮 1)Button(按钮 2)
小 textSize,文本内容 text)。 (3) 在第三区,放置用于切换图片的两个按钮 Button(使用的属性:宽 layout_weight, 高 layoutheight,按钮内容字体大 textSize, 文本内容 text)。 在第一个区域,再次使用水平线性布局,将该区域分为两块,都使用图片控件 ImageView, 用于显示图片,(ImageView 使用到的属性::宽 layout_weight,高 layoutheight,图片 源 src)。 7、阅读如下代码,根据注释填空。(每空 2 分,共 20 分) package bigbear.Menu; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.MenuItem.OnMenuItemClickListener; import android.view.SubMenu; import android.widget.EditText; import android.widget.Toast; public class MenuActivity extends Activity { /** Called when the activity is first created. */ //声明一个文本框控件 ① private @Override public void onCreate(Bundle savedInstanceState) { edittext = null; super.onCreate(savedInstanceState); setContentView(R.layout.main); //根据控件的ID获取控件 edittext = (EditText) ② (R.id.editText1); } @Override public boolean onCreateOptionsMenu(Menu menu) { // TODO Auto-generated method stub //--------------添加“字体大小”的子菜单--------- ③ fontMenu = menu.addSubMenu("字体大小"); //设置菜单图标 fontMenu.setIcon(R.drawable.ic_launcher); //设置菜单头图标 fontMenu.setHeaderIcon(R.drawable.ic_launcher); //设置菜单头的标题,并添加菜单项 fontMenu.setHeaderTitle("请选择字体的大小:"); //添加子菜单的菜单项 ④ font10 = fontMenu.add("10号字体"); //为子菜单的菜单项绑定监听器
⑤ .setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { // TODO Auto-generated method stub edittext.setTextSize(10 * 2); return false; } }) //----------添加普通菜单项--------------------- MenuItem plain = menu.add("普通菜单项"); plain.setIcon(R.drawable.ic_launcher); //设置单击监听事件 plain.setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { // TODO Auto-generated method stub //使用Toast弹出消息 ⑥ toast =Toast.makeText(MenuActivity.this, "单击事件", Toast.LENGTH_SHORT); toast. return false; ⑦ ; } }); //-------------添加文字颜色子菜单------------ SubMenu colorMenu = menu.addSubMenu(1,1,1,"喜欢的颜色"); ⑧请解释上一行的参数1,1,1所代表的含义 colorMenu.setIcon(R.drawable.ic_launcher); colorMenu.setHeaderIcon(R.drawable.ic_launcher); colorMenu.setHeaderTitle("请选择喜欢的颜色:"); MenuItem redItem = colorMenu.add(1,1,2,"红色"); //redItem.setCheckable(true); //redItem.setChecked(true); MenuItem greenItem = colorMenu.add(1,1,3,"绿色"); MenuItem blueItem = colorMenu.add(1,1,4,"蓝色"); //blueItem.setCheckable(true); blueItem.setChecked(true); colorMenu.setGroupCheckable(1, true, true); ⑨请解释上一行代码含义
redItem.setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { // TODO Auto-generated method stub //设置文本框中字体的颜色为红色 ⑩ .setTextColor(Color.RED); return false; } }); blueItem.setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { // TODO Auto-generated method stub edittext.setText("您选择了蓝色"); return false; } }); return super.onCreateOptionsMenu(menu); } } 答: ① EditText ② findViewById ③ SubMenu ④ MenuItem ⑤ font10 ⑥ Toast ⑦ show() ⑧第一个 1:子菜单组号(groupId);第二个 1:Menu Item 识别序号(itemId);第三 个 1:子菜单项序号(order) ⑨setGroupCheckable()方法:添加菜单项目组到菜单,第一个参数为要设置的 groupId, 第二个为菜单项是否可选,最后一个参数是是否为单选 ⑩ edittext 8、上下文菜单如何注册?(5 分) 答:上下文菜单必须注册到指定的 View 上才能显示,如: registerForContextMenu(button); registerForContextMenu(editText); registerForContextMenu(textView);
9、如何创建带 3 个按钮的对话框?(15 分,要求贴出主要代码并对最终效果截图) 源代码: package com.jero.threeButtonDialog; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; public class threeButtonDialog extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); new AlertDialog.Builder(this).setIcon(R.drawable.question).setTitle( "是否发送错误报告?").setPositiveButton("发送", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { new AlertDialog.Builder(threeButtonDialog.this) .setMessage("错误报告已经发送,感谢您的使用。 ").create().show(); } }).setNeutralButton(" 忽 略 ", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { new AlertDialog.Builder(threeButtonDialog.this).setMessage(" 您 已 经 忽 略 了这个错误。") .create().show(); }
}).setNegativeButton(" 取 消 ", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { new AlertDialog.Builder(threeButtonDialog.this).setMessage(" 您 已 经 取 消 了所有的操作."). create().show(); } }).show(); } } 最终效果截图:
分享到:
收藏