资源描述
Android复习资料
Android复习资料
编著--太理表白墙
一、单选题
1、退出 activity 对一些资源以及状态的操作保存,可以在生命周期的哪个函数中进行 a
A、onPause() B、onCreate() C、onResume() D、onStart()
2、Android 项目工程下面的 assets 目录的作用是什b
A、放置应用到的图片资源。 Res/drawable B、主要放置一些文件资源,这些文件会被原封不动打包到 apk 里面
C、放置字符串,颜色,数组等常量数据 res/values D、放置一些与 UI 相应的布局文件,都是 xml 文件 res/layout
3、下列不属于android布局的是(c)
A、FrameLayout B、LinearLayout C、BorderLayout D、TableLayout E、RelativeLayout
4、Intent 的作用的是 a
A、intent是连接四大组件的纽带,可以实现界面间切换,可以包含动作和动作数据,
B、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切 换页面而消失 service
C、实现应用程序间的数据共享 contentprovider
D、处理一个应用程序整体性的工作
5、下列哪个是AbsoluteLayout中特有的属性 b
A,android:layout_height B,android:layout_x
C,android:layout_above D,android:layout_toRightOf
6、RatingBar组件中不能用属性直接设置的是d
A,五角星个数 B,当前分数C,分数的增量D,五角星的色彩
7、关于BroadcastReceiver的说法不正确的是_b_
A, 是用来接收广播Intent的
B,一个广播Intent只能被一个订阅了此广播的BroadcastReceiver所接收
C,对有序广播,系统会根据接收者声明的优先级别按顺序逐个执行接收者
D,接收者声明的优先级别在<intent-filter>的android:priority属性中声明,数值越大优先级别越高
8、在android中使用RadioButton时,要想实现互斥的选择需要用的组件是 d
A,ButtonGroup B, RadioButtons C,CheckBox D,RadioGroup
9、DDMS中Log信息分为几个级别_c_
A,3 B,4 C,5 D,6
10、能够自动完成输入内容的组件是_d__
A,TextView B,EditText C,ImageView D,AutoCompleteTextView
11、创建子菜单的方法是_b__
A,add B,addSubMenu C,createSubMenu D,createMenu
12、使用AIDL完成远程service方法调用下列说法不正确的是_a_
A, aidl对应的接口名称不能与aidl文件名相同 B, aidl的文件的内容类似java代码
C, 创建一个Service(服务),在服务的onBind(Intent intent)方法中返回实现了aidl接口的对象
D,aidl对应的接口的方法前面不能加访问权限修饰符
13、处理菜单项单击事件的方法不包含_d_
A, 使用onOptionsItemSelected(MenuItem item)响应
B,使用onMenuItemSelected(int featureId ,MenuItem item) 响应
C,使用onMenuItemClick(MenuItem item) 响应
D,使用onCreateOptionsMenu(Menu menu)响应
14、进度条中哪个属性是设置进度条大小格式的_d_
A,android:secondaryProgress B,android:progress C,android:max D,style
15、下列用以显示一系列图像的是_b_
A,ImageView B,Gallery C,ImageSwitcher D,GridView
16、表示下拉列表的组件是_b__
A,Gallery B,Spinner C,GridView D,ListView
17、关于AlertDialog的说法不正确的是_a_
A,要想使用对话框首先要使用new关键字创建AlertDialog的实例
B,对话框的显示需要调用show方法
C,setPositiveButton方法是用来加确定按钮的
D,setNegativeButton方法是用来加取消按钮的
18、下列说法错误的是__d__
A,Button是普通按钮组件,除此外还有其他的按钮组件
B,TextView是显示文本的组件,TextView是EditText的父类
C,EditText是编辑文本的组件,可以使用EditText输入特定的字符
D,ImageView是显示图片的组件,可以通过设置显示局部图片
19、上下文菜单与其他菜单不同的是_b_ A,上下文菜单项上的单击事件可以使用onMenuItemSelected方法来响应 B,上下文菜单必须注册到指定的view上才能显示 C,上下文菜单的菜单项可以添加,可以删除 D,上下文菜单的菜单项可以有子项
20、拖动条组件是_c_ A,RatingBar B,ProgressBar C,SeekBar D,ScrollBar
21、关于隐式Intent正确的是_a_ A, android中使用IntentFilter 来寻找与隐式Intent相关的对象 B,通过组件的名称寻找与intent相关联的对象 C, 隐式Intent更多用于在应用程序内部传递消息 D, 一个声明了IntentFilter的组件只能响应隐式Intent请求
22、多选框被选择事件通常用__b__ A,setOnClickListener B,setOnCheckChangeListener C, setOnMenuItemSelectedListener D,setOnCheckedListener
23、自定义对话框时,将视图对象添加到当前对话框的方法是_d_ A,setIcon B,setXML C,setLayout D,setView
24、下列不属于service生命周期的方法是_C_ A,onCreate B,onDestroy C,onStop D,onStart
25、绑定Service的方法是_a__ A,bindService B, startService C,onStart D,onBind
二、 填空题:
26、当启动一个Activity并且新的Activity执行完后需要返回到
启动它的Activity来执行的回调函数是_____startActivityResult()
27、 android中输入日期的组件是__DatePicker ___
28、 AIDL的全称是__ Android interface definition language__
29、android中输入时间的组件是_TimePicker______
30、Android应用的入口点是 ____Main___
31、android系统4个应用程序之一,主要用于后台运行和跨进程访
问的是_service__
32、创建只显示文本的Toast对象时建议使用__makeText---方法
四、 简答题
1.Intent有哪些属性(或Intent组成)?
Intent对象由组件名称(type)、Action、Data、Category、Extra及component这6部分组成。
Unit 4. Android 生命周期
Ø Android系统中的进程优先级由高到低
Ø Android组件
组件是可以调用的基本功能模块,Android应用程序就是由组件组成的
Android系统有四个重要的组件,分别是Activity、Service、BroadcaseReceiver和ContentProvider
Activity是Android程序的呈现层,显示可视化的用户界面,Android应用程序可以包含一个或多个Activity,一般在程序启动后会呈现一个Activity。
Service用于没有用户界面,但需要长时间在后台运行的应用
BroadcaseReceiver是用来接受并响应广播消息的组件
ContentProvider是Android系统提供的一种标准的共享数据的机制,应用程序可以通过ContentProvider访问其他应用程序的私有数据,私有数据可以是存储在文件系统中的文件,也可以是SQLite中的数据库
Activity表现为四种状态,分别是活动状态、暂停状态、停止状态和非活动状态
Activity 事件的回调函数:
protected void onStart();
protected void onRestart();
protected void onResume();
protected void onPause();
protected void onStop();
protected void onDestroy();
Activity:
Android系统提供了两种调试工具LogCat和DevTools,用于定位、分析及修复程序中出现的错误
Ø LogCat程序调试原理
1. 引入android.util.Log包
2. 使用Log.v(),Log.d(),Log.i(),Log.w() 和 Log.e()五个函数在程序中设置“日志点”
3. 当程序运行到“日志点”时,应用程序的日志信息便被发送到LogCat中
4. 判断“日志点”信息与预期的内容是否一致
E.g. final static String TAG = "LOGCAT"; Log.v(TAG,"Verbose");
Ø DevTools是用于调试和测试的工具,包括了一系列用户各种用途的小工具
Unit 5. Android 用户界面
ü 常见的系统控件包括TextView、EditText、Button、ImageButton、Checkbox、RadioButton、Spinner、ListView和TabHost
TextView:显示字符串,EditText是一个具有编辑功能的TextView
相应的XML文件:
<TextView android:id="@+id/TextView01" //@表示后面的字符串是ID资源,加号(+)表示需要建立新资源名称,并添加到R.java文件中
android:layout_width="wrap_content" //wrap_content表示TextView的宽度只要能够包含所显示的字符串即可,若为fill_content表示则表示控件宽度将等于父控件的宽度
android:layout_height="wrap_content"
android:text="TextView01" >
</TextView>
Test.java:
TextView txv=(TextView)findViewByID(R.id.TextView01);
txv.setText("User:");
ImageButton:
将img1拷贝到/res/drawable文件夹下(R.java中自动更新)
imageButton.setImageResource(R.drawable.img1);
按钮响应点击事件:添加点击事件的监听器
imageButton.setOnClickListener(new View.OnClickListener()
{
public void onClick(View view)点击事件的回调函数
{
txv.setText("ImageButton按钮");
}
})
每个View仅可以注册一个点击事件的监听器,如果使用setOnClickListener()函数注册第二个点击事件的监听器,之前注册的监听器将被自动注销.
多个按钮注册到同一个点击事件的监听器上,代码如下:
Button.OnClickListener buttonListener = new Button.OnClickListener(){
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.Button01:
textView.setText("Button按钮");
return;
case R.id.ImageButton01:
textView.setText("ImageButton按钮");
return;
}
}};
button.setOnClickListener(buttonListener);
imageButton.setOnClickListener(buttonListener);
CheckBox和RadioButton:
怎样定义同组中的RadioButton?
XML中:
<RadioGroup android:id="@+id/RadioGroup01"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RadioButton android:id="@+id/RadioButton01"
android:layout_width="wrap_content"
android:layout_height="wrap_content“
android:text="RadioButton01" >
</RadioButton>
<RadioButton android:id="@+id/RadioButton02"
android:layout_width="wrap_content"
android:layout_height="wrap_content“
android:text="RadioButton02" >
</RadioButton>
</RadioGroup>
Test.java中:
RadioButton radioButton1 =(RadioButton)findViewById(R.id.RadioButton01);
RadioButton.OnClickListener rblistener=new RadioButton.OnClickListener()
{
public void OnClick(View v)
{
//process;
}
};
radioButton1.setOnClickListener(rblistener);
Spinner:(similar to ComboBox)
Test.java:
Spinner spinner=(Spinner)findViewById(R.id.Spinner01);
List<String>list=new ArrayList<String>( );
list.add("item1");
list.add("item2");
ArrayAdapter<String>adapter=new ArrayAdapter <String>(
this,android.R.layout.simple_spinner_item, list );
//数组适配器能够将界面控件和底层数据绑定在一起
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
ListView:(垂直显示的列表控件)
ListView listv=(ListView)findViewById(R.id.ListView01);
List<String>list=new ArrayList<String>();
List.add("item1");
List.add("item2");
ArrayAdapter<String> adapter=new ArrayAdapter<String>
(this, android.R.layout.simple_list_item_1, list );
listv.setAdapter(adapter);
AdapterView.OnItemClickListener listvListener=new AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
String msg =””;
textView.setText(msg);
}};
}
TabHost:实现多个分页之间的快速切换(Similar to TabControl)
有几个tabpage就建立几个xml
Test.java:
public class TabDemo extends TabActivity { //普通的都是 extends Activity
// 与以往继承Activity不同,TabActivity支持内嵌多个Activity或View
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TabHost tabHost = getTabHost(); //获得Tab标签页的容器
LayoutInflater.from(this).inflate(R.layout.tab1, tabHost.getTabContentView(),true);
//LayoutInflater将tab1.xml文件中的布局转换为Tab标签页可以使用的View对象
LayoutInflater.from(this).inflate(R.layout.tab2,tabHost.getTabContentView(),true);
LayoutInflater.from(this).inflate(R.layout.tab3,tabHost.getTabContentView(),true);
tabHost.addTab(tabHost.newTabSpec("TAB1")
.setIndicator("线性布局").setContent(R.id.layout01));
//使用addTab()函数在tabHost上添加了第1个标识为"TAB1"的分页
tabHost.addTab(tabHost.newTabSpec("TAB2")
.setIndicator("绝对布局").setContent(R.id.layout02));
tabHost.addTab(tabHost.newTabSpec("TAB3")
.setIndicator("相对布局").setContent(R.id.layout03));
}
ü 界面布局:
声明Android程序的界面布局有两种方法:
使用XML文件描述界面布局
在程序运行时动态添加或修改界面布局
用户既可以独立使用任何一种声明界面布局的方式,也可以同时使用两种方式
使用XML文件声明界面布局的特点:
将程序的表现层和控制层分离
在后期修改用户界面时,无需更改程序的源代码
可视化界面加快设计
线性布局LinearLayout:
如果垂直排列,则每行仅包含一个界面元素
如果水平排列,则每列仅包含一个界面元素
框架布局FrameLayout
表格布局TableLayout:
添加行为TableRow
<TableLayout android:id="@+id/TableLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="">
<TableRow android:id="@+id/TableRow01"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView...></TextView>
<EditText ...></EditText>
</TableRow>
<TableRow...>
<Button...></Button>
<Button...></Button>
</TableRow>
</TableLayout>
相对布局(RelativeLayout):
e.g.
android:layout_below="@id/label"
android:layout_alignParentRight="true"
android:layout_toLeftOf="@id/cancel"
android:layout_alignTop="@id/cancel"//声明与ID为cancel的元素在相同的水平位置
绝对布局(AbsoluteLayout)
android:layout_x="40dip"
android:layout_y="40dip"
ü 菜单:
Android系统支持三种菜单:
选项菜单(Option Menu)
子菜单(Submenu)
快捷菜单(Context Menu)
选项菜单
分为图标菜单(Icon Menu)& 扩展菜单(Expanded Menu)。
图标菜单能同时显示文字和图标的菜单,最多支持6个子项,但不支持单选框和复选框
扩展菜单是在图标菜单子项多余6个时才出现,是垂直的列表型仅有文字菜单
重载Activity的onCreateOptionMenu()函数,才能在Android应用程序中使用选项菜单
public boolean onCreateOptionsMenu(Menu menu){
menu.add(0,MENU_DOWNLOAD,0,"下载设置");//MENU_DOWNLOAD=1
//MenuItem android.view.Menu.add(int groupId, int itemId, int order, CharSequence title)
menu.add(0,MENU_DOWNLOAD,0,"下载设置").setIcon(R.drawable.download);
.setShortcut(’,’d’);//快捷键
return true;
}
重载onPrepareOptionsMenu()函数,能够动态的添加、删除菜单子项,或修改菜单的标题、图标和可见性等内容
E.g.
下面的代码是在用户每次打开选项菜单时,在菜单子项中显示用户打开该子项的次数
public boolean onPrepareOptionsMenu(Menu menu){
MenuItem uploadItem = menu.findItem(MENU_UPLOAD);
uploadItem.setTitle("上传设置:" +String.valueOf(MenuUploadCounter));
return true;
}
onOptionsItemSelected ()函数能够处理菜单选择事件,且该函数在每次点击菜单子项时都会被调用
public boolean onOptionsItemSelected(MenuItem item){
switch(item.getItemId()){//获取到被选择菜单子项的ID
case MENU_DOWNLOAD:
MenuDownlaodCounter++;
return true;
case MENU_UPLOAD:
MenuUploadCounter++;
return true;
}
return false;
}
子菜单
子菜单不支持嵌套,添加是使用addSubMenu()函数实现
SubMenu uploadMenu = (SubMenu) menu.addSubMenu(0,MENU_UPLOAD,1,"上传设置")
.setIcon(R.drawable.upload);
uploadMenu.setHeaderIcon(R.drawable.upload);
uploadMenu.setHeaderTitle("上传参数设置");
uploadMenu.add(0,SUB_MENU_UPLOAD_A,0,"上传参数A");
uploadMenu.add(0,SUB_MENU_UPLOAD_B,0,"上传参数B");
快捷菜单
选项菜单中的onCreateOptionsMenu()函数仅在选项菜单第一次启动时被调用一次
快捷菜单的onCreateContextMenu()函数每次启动时都会被调用一次
菜单选择事件的处理需要重载onContextItemSelected()函数,该函数在用户选择快捷菜单中的菜单子项后被调用,与onOptionsItemSelected ()函数的使用方法基本相同
菜单在XML中的实现:
<menu>
<item></item>
<item></item>
<item></item>
</menu>
ü 界面事件
触摸事件将传递给onTouch()函数进行处理
是否继续传递事件给其他处理函数是由事件监听器处理函数的返回值决定的,取决于监听处理函数返回值。
触摸事件:
重载onTouch ()函数
touchView.setOnTouchListener(new View.OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
//过程代码……
return true/false;
})
TextView touchView = (TextView)findViewById(R.id.touch_area);
touchView.setOnTouchListener(new View.OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch (action) {
case (MotionEvent.ACTION_DOWN):
...break;
case (MotionEvent.ACTION_UP):
...break;
case (MotionEvent.ACTION_MOVE):
...break;
}
return true;
}
});
Unit6 组建通信与广播消息
v 简述Intent的定义和用途。
Define: Intent可称为一个在不同组件之间传递的消息,这个消息在到达接收组件后,接收组件会执行相关的动作
Intent的用途:
1. 启动Activity和Service
2. 在Android系统上发布广播消息
Intent可以实现不同Activity之间的切换和数据传递
v 简述Intent过滤器的定义和功能。
Define: Intent过滤器是一种根据Intent中的动作(Action)、类别(Categorie)和数据(Data)等内容,对适合接收该Intent的组件进行匹配和筛选的机制
Function: Intent过滤器可以匹配数据类型、路径和协议,还包括可以用来确定多个匹配项顺序的优先级(Priority)
应用程序的Activity组件、Service组件和BroadcastReceiver都可以注册Intent过滤器,则这些组件在特定的数据格式上就可以产生相应的动作
v 3.简述Intent解析的匹配规则。
Intent到Intent过滤器的映射过程称为“Intent解析”
Intent解析可以在所有的组件中,找到一个可以与请求的Intent达成最佳匹配的Intent过滤器
Intent解析的匹配规则:
1. Android系统把所有应用程序包中的Intent过滤器集合在一起,形成一个完整的Intent过滤器列表
2. 在Intent与Intent过滤器进行匹配时,Android系统会将列表中所有Intent过滤器的“动作”和“类别”与Intent进行匹配,任何不匹配的Intent过滤器都将被过滤掉。
3. 把Intent数据Uri的每个子部与Intent过滤器的<data>标签中的属性进行匹配.
4. 如果Intent过滤器的匹配结果多于一个,则可以根据在<intent-filter>标签中定义的优先级标签来对Intent过滤器进行排序,优先级最高的Intent过滤器将被选择.
24 / 24
展开阅读全文