1、11. Android 的四大组件是哪些。它们的作用。答:Activity service Content Provider BroadCastReceiverActivity 是 Android 程序与用户交互的窗口,是 Android 构造块中最基本的一种,它需要为保持各界面的状态,做很多持久化的事情,妥善管理生命周期以及一些跳转逻辑。Service 是后台服务于 Activity,封装有一个完整的功能逻辑实现,接受上层指令,完成相关的事物,定义好需要接受的 Intent 提供同步和异步的接口。Content Provider:是 Android 提供的第三方应用数据的访问方案,可以派生C
2、ontent Provider 类,对外提供数据,可以像数据库一样进行选择排序,屏蔽内部数据的存储细节,向外提供统一的接口模型,大大简化上层应用,对数据的整合提供了更方便的途径。BroadCast Receiver:接受一种或者多种 Intent 作触发事件,接受相关消息,做一些简单处理,转换成一条 Notification,统一了 Android 的事件广播模型2 安卓项目的目录结构,命名及含义。src 源文件:使用 java 语言编写的代码,包括各种 Activity 的实现。 R.java:由 eclipse 自动生成,包含了应用程序所使用到的资源 ID。 Android library
3、:Android 库文件。 assets:放置多媒体文件等。 2res:应用程序所需的资源文件,如图标,动画,颜色等。 drawable:图片资源 layout:描述了 Activity 的布局。 values:定义字符串,颜色等 Android Manifest.xml:应用程序的配置文件。在该文件中声明应用程序的名称,使用到的 Activity,Service,Receive,权限等。AndroidManfest.xml 分析manifest 根节点,描述了 package 中所有的内容xmlns:android包含命名空间的声明。xmlns:android=http:/ 中各种标准属性能
4、在文件中使用,提供了大部分元素中的数据Package 声明应用程序包application包含 package 中 application 级别组件声明的根节点。此元素也可包含 application的一些全局和默认的属性,如标签、icon、主题、必要的权限,等等。一个 manifest能包含零个或一个此元素(不能大余一个)android:icon 应用程序图标android:label 应用程序名字3Activity用来与用户交互的主要工具。Activity 是用户打开一个应用程序的初始页面,大部分被使用到的其他页面也由不同的 activity 所实现,并声明在另外的 activity 标记
5、中。注意,每一个 activity 必须有一个 标记对应,无论它给外部使用或是只用于自己的 package 中。如果一个 activity 没有对应的标记,你将不能运行它。另外,为了支持运行时查找 Activity,可包含一个或多个元素来描述 activity 所支持的操作android:name 应用程序默认启动的 activityintent-filter声明了指定的一组组件支持的 Intent 值,从而形成了 IntentFilter。除了能在此元素下指定不同类型的值,属性也能放在这里来描述一个操作所需的唯一的标签、icon 和其他信息action 组件支持的 Intent action
6、category组件支持的 Intent Category。这里指定了应用程序默认启动的 activityuses-sdk 该应用程序所使用的 sdk 版本相关3activity 中 onCreate()方法的用法Activity 中有一个名称叫 onCreate 的方法。该方法是在 Activity 创建时被系统调用,是一个Activity 生命周期的开始。4android 中是如何访问布局的。LinearLayout 线性布局;AbsoluteLayout 绝对布局;TableLayout 表格布局;RelativeLayout 相对布局;FrameLayout 帧布局;4LinearLa
7、yout(线性布局)提供了控件水平垂直排列的模型,同时可以通过设置子控件的weight 布局参数控制各个控件在布局中的相对大小。水平(vertical)垂直(horizontal)AbsoluteLayout(坐标布局)可以让子元素指定准确的 x/y 坐标值,并显示在屏幕上。(0, 0)为左上角,当向下或向右移动时,坐标值将变大。AbsoluteLayout 没有页边框,允许元素之间互相重叠(尽管不推荐)。我们通常不推荐使用 AbsoluteLayout,除非你有正当理由要使用它,因为它使界面代码太过刚性,以至于在不同的设备上可能不能很好地工作。 Android:layout_x/layout
8、_y=”56px” 确定控件位置RelativeLayout(相对布局) 允许子元素指定他们相对于其它元素或父元素的位置(通过ID 指定) 。因此,你可以以右对齐,或上下,或置于屏幕中央的形式来排列两个元素。元素按顺序排列,因此如果第一个元素在屏幕的中央,那么相对于这个元素的其它元素将以屏幕中央的相对位置来排列。如果使用 XML 来指定这个 layout,在你定义它之前,被关联的元素必须定义。FrameLayout(单帧布局)是最简单的一个布局对象。它被定制为你屏幕上的一个空白备用区域,之后你可以在其中填充一个单一对象 比如,一张你要发布的图片。所有的子元素将会固定在屏幕的左上角;你不能为 F
9、rameLayout 中的一个子元素指定一个位置。后一个子元素将会直接在前一个子元素之上进行覆盖填充,把它们部份或全部挡住(除非后一个子元素是透明的) 。TableLayout(表格布局) 以行列的形式管理子控件,每一行为一个 TableRow 的对象,TableRow 也可以添加子控件5android:collapseColumns= “n”隐藏 TableLayout 里面的 TableRow 的列 nandroid:stretchColumns=“n”设置列 n 为可延伸的列android:shrinkColumns= “n”设置列 n 为可收缩的列5main.xml 中的一段代码,每一
10、项的含义android:id /这个 xml 属性是继承自 android.view 类的 xml 属性。它为framelayout 提供一个唯一识别符号,之后,程序要用到它时可以用 View.findViewById() 或 Activity.findViewById()来找到它。 android:layout_width: 布局宽 android:layout_height: 布局高 /它们的取值是 fill_parent 或 wrap_content。 fill_parent :在 x 轴或则 y 轴上充满父容器的空间。 wrap_content :framelayout 里的元素有多少
11、宽高就多少宽高, /这两个属性都是定义在 android.widget.FrameLayout 的嵌套类android.widget.FrameLayout.LayoutParams 里。 android:background:背景 android:foreground :前景 66数据存储的五种方法分别是什么?答:1 使用 SharedPreferences 存储数据; 2 文件存储数据; 3 SQLite 数据库存储数据; 4 使用 ContentProvider 存储数据; 5 网络存储数据;7 文件保存操作,代码怎么写,SDk 读写权限?答:文件存储数据文件存储方式是一种较常用的方法,
12、在 Android 中读取/写入文件的方法,与 Java 中实现I/O 的程序是完全一样的,提供了 openFileInput()和 openFileOutput()方法来读取设备上的文件。具体实例如下:String fn = “moandroid.log”;FileInputStream fis = openFileInput(fn);FileOutputStream fos = openFileOutput(fn,Context.MODE_PRIVATEandroid 中关于对文件 SD 卡以及手机本身内存中建立文件保存等操作使用 File 进行存储操作主要使用到以下的:public ab
13、stract FileInputStream openFileInput (String name)这个主要是打开文件,返回 FileInputStream:public abstract FileOutputStream openFileOutput (String name, int mode)7这个主要是写入文件,如果该文件不存在,直接进行创建,返回 FileOutputStreamMode(主要有以下的四种的模式)MODE_APPEND /在尾部追加MODE_PRIVATE /私有MODE_WORLD_READABLE /可读MODE_WORLD_WRITEABLE /可写:FileI
14、nputStream(获取文件输入流)与 FileOutputStream (获取文件输出流)这两类在 JavaIO 操作中很常见接下来进行操作 保存成功之后讲文件保存在当前应该程序的包名下的 files/(可以改变存储的其他路径)源代码如下:java view plaincopyprint?1.package com.jiangqq.file; 2. 3.import java.io.FileInputStream; 4.import java.io.FileOutputStream; 5. 6.import android.app.Activity; 7.import android.os
15、.Bundle; 8.import android.view.View; 9.import android.view.View.OnClickListener; 10. import android.widget.Button; 11. import android.widget.EditText; 12. import android.widget.Toast; 13. 14. public class FileAcitivy extends Activity 15. 16. private Button bt1, bt2; 17. private EditText et1, et2; 18
16、. 19. private static final String FILENAME = “temp_file.txt“; 820. 21. Override 22. public void onCreate(Bundle savedInstanceState) 23. super.onCreate(savedInstanceState); 24. setContentView(R.layout.main); 25. bt1 = (Button) this.findViewById(R.id.bt1); 26. bt2 = (Button) this.findViewById(R.id.bt2
17、); 27. et1 = (EditText) this.findViewById(R.id.et1); 28. et2 = (EditText) this.findViewById(R.id.et2); 29. bt1.setOnClickListener(new OnClickListener() 30. 31. Override 32. public void onClick(View v) 33. write(et1.getText().toString(); 34. Toast.makeText(FileAcitivy.this, “文件写入成功“, Toast.LENGTH_LON
18、G) 35. .show(); 36. 37. ); 38. bt2.setOnClickListener(new OnClickListener() 39. 40. Override 41. public void onClick(View v) 42. et2.setText(read(); 43. Toast.makeText(FileAcitivy.this, “文件读出成功“, Toast.LENGTH_LONG) 44. .show(); 45. 46. ); 47. 48. 49. / 读文件方法 50. private String read() 51. try 52. Fil
19、eInputStream inputStream = openFileInput(FILENAME); 53. byte b = new byteinputStream.available(); 54. inputStream.read(b); 55. return new String(b); 56. catch (Exception e) 57. 58. return null; 59. 60. 961. / 写文件 62. private void write(String content) 63. try 64. FileOutputStream fos = openFileOutpu
20、t(FILENAME, MODE_APPEND); 65. fos.write(content.getBytes(); 66. fos.close(); 67. catch (Exception e) 68. 69. 70. 文件可以保存在手机内存中,也可以保存在 SD 卡上面,保存在 SD 卡上要申请读写 SDS卡权限,权限如下:保存在手机上html view plaincopyprint?1. public void saveFile(String fileName,String contentStr) throws IOException 2. FileOutputStream file
21、OutputStream=context.openFileOutput(fileName, Context.MODE_PRIVATE); 3. fileOutputStream.write(contentStr.getBytes(); 4. 保存在 SD 卡上html view plaincopyprint?1. public void savefile2SD(String fileNameStr, String contentStr) throws FileNotFoundException 2. File file=new File(Environment.getExternalStora
22、geDirectory(), fileNameStr); 3. OutputStream oStream=new FileOutputStream(file); 4. byte data=contentStr.getBytes(); 5. try 6. oStream.write(data); 7. catch (IOException e) 8. / TODO Auto-generated catch block 109. e.printStackTrace(); 10. 11. finally 12. try 13. oStream.close(); 14. catch (IOExcept
23、ion e) 15. / TODO Auto-generated catch block 16. e.printStackTrace(); 17. 18. 19. 20. 关于界面,以前见到淘宝上面输入框里面有提示文字,然后鼠标点进去后文字消失,等待用户输入的效果html view plaincopyprint?1. android:hint=“请输入文件名称“-就是这样一行代码还有就是要注意一下:在模拟器上面如果输入中文的话,那么保存后就有乱码,保存文件后导出到 PC 的话会发现找不到该文件8.android 中数据库事物怎么定义?答:实现 Android 数据库事务非常简单,只需要使用 SQLiteDatabase 类的三个方法即可。beginTransaction();setTransactionSuccessful();endTransaction();当调用 endTransaction()时,所有从 beginTransaction()开始的操作都会被提交。