android GUI程序设计复习
Android基础知识:
1、Andy Rubin 被称为“Android之父”
2、Android是由Google公司来维护和持续开发的(2005年Google 公司收购了Android公司)
3、Android开发环境的搭建过程由下载安装JDK、安装Eclipse、下载Android SDK和在Eclipse安装并配置ADT四步组成。
4、Android系统架构分为4层,从高到低分别是应用层、应用框架层、系统运行库层、Linux内核层。
5、Android应用的源程序使用Android SDK编译后,生成的应用程序安装和执行程序文件的后缀是apk。
6、Android采用了Google公司开发的基于寄存器的Java虚拟机,该虚拟机的名字是Dalvik。
7、XML布局文件是Android系统中定义视图的常用方法,所有的XML布局文件必须保存在res/layout目录中。
8、Android中常用的四个布局是Framelayout(框架布局)、Linearlayout(线性布局)、Relativelayout(相对布局)、和Tablelayout (表格布局)、(还有一个AbsoluteLayout(绝对布局))。
9、Android的四大组件是Activity、Service、Broadcast Receiver和Content Provider。
10、定义LinearLayout水平方向布局时至少设置的三个属性分别为Android:orientation 、android:layout_width 和android:layout_height 11、Android SDK主要是Java语言为基础。
12、Android创建工程时需要填写的信息名称有:工程名、包的名字、应用的名字、还有Activity的名字。
Activity
1、一个Activity从被创建到进入运行状态需要依次调用Activity生命周期中的onCreate()、onStart()和onResume()方法。
2、当启动一个Activity并且新的Activity执行完后需要返回到启动它的Activity来执行的回调方法是:startActivityForResult()。
3、为了使Android适应不同分辨率的机型,布局时像素单位应使用sp或dip,字体单位应使用sp。
4、在Activity中创建选项菜单的方法是onCreateOptionsMenu()。
5、创建子菜单的方法是addSubMenu()。
6、在布局文件中使用属性android:onClick给某个按钮绑定事件处理函数。
7、每一个Android应用通常都有一个入口Activity,它们名字可以是任意的,不是必须是“MainActivity”
8、如果使用LinearLayout实现组件垂直排列,那么在xml中应该添加android:orientation=”vertical”属性进行设置。
9、在Activity中需要找到一个id为bookName的TextView组件的语句为TextView tv=(TextView)this.findViewById(R.id.bookName); 10、Android中的菜单类型有:OptionMenu、ContextMenu和SubMenu。
11、在Android中使用上下文Menu时可能需要重写的方法有onCreateContextMenu().
12、在Android程序中,LogCat的右上方的五个字母表示不同类型的日志信息,他们的级别依次增高:
[V]:详细(Verbose)信息、[D]调试(Debug)信息、[I]通告(Info)信息、[W]:警告(Warn)信息、[E]:错误(Error)信息
Log.w()用于输出警告级别的日志信息。
13、Activity生命周期中,第一个需要执行的方法是OnCreate().
14、Activity生命周期中onPause()方法当界面被隐藏时被调用。
15、如果将一个TextView的android:layout_height属性设置为wrap_content,那么该组件该文本域的高度仅占据该组件的实际高度。
16、Activity生命周期图:
17、Activity生命周期:给一个TextView设置红色字体,应该使用:setTextColor(0xffff0000)
18、Android适配器主要用来把数据绑定到组件上的。
19、对于一个Activity,在AndroidManifest.xml中对其进行如下定义:
android:name=”https://www.360docs.net/doc/ac16681939.html,UNCHER”/> 代表该Activity将作为程序主Activity,并且在LANCHER菜单中启动。 Intent 1、想要启动一个Activity,需要使用Intent对象,它指定了启动源和启动目标。 2、Intent对象具有6种属性,分别为:组件名称Component Name、动作属性Action、类别属性Category、数据属性Data、附加信息Extras 和标题属性Flags。 3、在不同的Activity之间传送数据时,可以使用Intent来传递数据,通常将需要传递的数据保存在Intent的Extras。 Android的常用控件 1、Android中输入日期的组件是DatePicker。 2、Android可以在状态栏中出现提醒机制的组件式Notification。 3、Android中可以编辑文本的组件式EditText。 4、能够自动完成输入内容的组件式:AutoCompleteTextView。 广播接收器 1、Android中可供接收的三类广播分别是:正常广播、有序广播Ordered Broadcast和粘滞广播(Sticky Broadcast) 2、在Android程序中注册广播接收器的方法是registerReceiver()。 3、很多时候,广播用在Service向Activity传递数据,一般都会在Service中开启线程来做一些耗时的工作,并不时地将结果更新到UI 上。 4、Service中开启的线程是不能更新UI的,所以常用的方法就是通过广播将结果发送给Activity,Activity在接收到广播后,取出数据,更新UI。 5、Android中,不能在主线程做耗时操作,否则会阻塞UI的显示,也不能在非主线程中更新UI,否则会直接报错。 Service 1、android和service的启动方法是:startService()和bindService()。 2、服务Service是Android系统中四大组件之一。服务主要用于两个目的:后台运行和跨进程访问,通过AIDL服务可以实现不同进程之间的通信。 3、可以运行于后台的,可以无界面的程序,在Android系统中,可以使用Service技术来实现. ContentProvider 1、数据库是Android存储方案的核心,在Android系统中使用SQLite 数据库。 2、在使用SQLiteOpenHelper这个类时它的onUpgrade()方法是用来实现版本升级用的。 3、在多个应用中读取共享存储数据时,需要用到ContentResolver的query方法。 编程题: 1、图中有三个EditText编辑框和一个按钮,功能是点击按钮后,第3个编辑框将显示前两个编辑框中的和。试编程实现该功能。package com.de.kaoshi2; import android.os.Bundle; import android.app.Activity; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends Activity { private EditText one; private EditText two; private Button button; private TextView result; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(https://www.360docs.net/doc/ac16681939.html,yout.activity_main); one = (EditText) this.findViewById(R.id.one); two = (EditText) this.findViewById(R.id.two); button = (Button) this.findViewById(R.id.button); result = (TextView) this.findViewById(R.id.result); button.setOnClickListener(new OnClickListener() { public void onClick(View v) { try { int a = Integer.parseInt(one.getText().toString()); int b = Integer.parseInt(two.getText().toString()); result.setText("" + (a + b)); } catch (NumberFormatException e) { return; } } }); } } // Uri uri=Uri.parse("smsto:135********"); // Intent in=new Intent(Intent.ACTION_SENDTO,uri); // in.setType("vnd.android-dir/mms/-sms"); // in.putExtra("sms_bod y", "???"); // startActivity(in); 2、图中有一个EditText编辑框和一个按钮,功能室点击按钮后,在编辑框中显示自己的名字。试编程实现该功能。 package com.de.kaoshi3; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import android.app.Activity; public class MainActivity extends Activity { private Button button; private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(https://www.360docs.net/doc/ac16681939.html,yout.activity_main); button = (Button) findViewById(R.id.btn); textView = (TextView) findViewById(R.id.tx1); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //写出下面代码 textView.setText("吴嘉辉"); } }); } } 3、打电话 package com.example.tel_kaoshi; import https://www.360docs.net/doc/ac16681939.html,.Uri; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { private EditText phoneEditText; private Button callButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(https://www.360docs.net/doc/ac16681939.html,yout.activity_main); phoneEditText = (EditText) this.findViewById(R.id.phoneEditText); callButton = (Button) this.findViewById(R.id.callButton); callButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (!phoneEditText.getText().toString().equals("")) { Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneEditText.getText().toString())); startActivity(intent); } } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } } 简答题 1、请简述Android系统构架分为哪四层? 答:Android系统架构分为4层,从高到低分别是应用层、应用框架层、系统运行库层、Linux内核层。 2、请描述Activity的生命周期? 答:1.完整生命周期:即一个activity从出现到消失,对应的周期方法是从onCreate到onDestroy 2.可见生命周期:从onStart()到onStop()方法,在这个周期中,用户可以看见Activity,但不一定能够与之交互,这两个方法可以随着状态的变化被执行多次。 3.前景生命周期:从onResume()到onPause()方法,在这个周期中,Activity处在其它Activity之前,即在Activity栈的最顶端,负责与用户进行交互,伴随着状态的变化,这两个方法可以被执行多次。 3、Android工程下面有个gen目录,该目录下有个R.Java文件,该文件的作用是什么,能不能修改,为什么? 答:用于存放由Android开发工具自动生成的文件。不能修改,因为android开发工具会根据放入res目录的界面配置文件,图片以及 一些文本等资源而同步更新修改R.java文件。 4、简述Android中Service的特点? 答:可以运行于后台的,可以无界面的程序,在Android系统中,可以使用Service技术来实现。 5、Android四大组件分别是哪四个? 答:Android的四大组件是Activiey、Service、Broadcast Receiver和Content Provider。 6、一个Intent对象包括6个对象,请写出这六个对象的属性。 答:Intent对象具有6种属性,分别为组件名称Component Name、动作属性Action、类别属性Category、数据属性Data、附加信息Extras 和标题属性Flags。 7、请简述Android的数据存储方式有哪几种? 答:(1)使用SharedPreferences存储数据; (2)文件存储数据 (3)SQLite数据库存储数据; (4)使用ContentProvider存储数据; (5)网络存储数据; 8、请简述Android项目中res目录中各子目录的作用? 答:/res/anim/:存放定义补间动画的XML文件 /res/color/:存放定义不同状态下颜色列表的XML文件 /res/drawable :存放各种位图文件和各种Drawable对象的XML 文件 /res/layout:存放各种用户界面的布局文件 /res/menu :存放定义的各种菜单资源 /res/raw:存放任意类型的原生资源 /res/values/:存放简单值得的XML文件 /res/xml/:存放任意原生的XML文件 9、请写出创建一个Notification的步骤。 答:①得到NotificationManager的引用; ②初始化一个Notification对象; ③设置Notification的参数; ④使用NotificationManager的notify(int, Notification)方法发出通知。 10、请简单描述Android中常用的五种布局? 答:(1)线性布局(Linear Layout):以线性方向显示子视图元素; (2)绝对布局(Absolute Layout):ViewGroup以绝对方式显示子视图元素 (3)相对布局(Relative Layout): ViewGroup以相对位置显示子视图元素 (4)表格布局(Table Layout): ViewGroup以表格显示子视图元素(5)单帧布局(Frame Layout): ViewGroup将子视图放在布局的左上角,并覆盖在前一子控件的上层