01--Android架构
- 底层Linux核心的工作,安全管理、内存管理、进程管理、电源管理、硬件驱动
- Libraries:c代码库
OpenGL:图形快速显示,游戏开发 webkit:浏览器内核
- Android Runtime
Dalvik VM:虚拟机,android代码运行在此虚拟机 运行时调用Libraries C代码库
- Application Framework中间介,java代码,调用底层c代码
- Applications原生的应用程序:浏览器、桌面、联系人等
02--Android开发环境的搭建
- JDK的安装和Java环境变量设置
- 下载、解压ADT
- 创建及使用模拟器
03--adb命令行操作
为了能在任意目录使用adb命令,需要将SDK目录下的platformtools文件夹路径和tools文件夹路径配置到path环境变量中。
- adb:android debug briage,android调试桥
- 列出可以使用的android版本: android list targets
- 列出可以使用的模拟器: android list avd
- 启动模拟器:emulator –avd <模拟器名>
- 显示已连接的设备:adb devices,显示内容:设备名,状态(device、offline)
- 导入文件到手机:adb push <Windows源文件路径> <手机目标路径>。
- 从手机导出文件:adb pull <手机源文件路径> <Windows目录路径>
- 安装程序:adb install <apk文件路径>
- 卸载程序:adb uninstall <包名>
- 重启adb: adb kill-server,abd start-server
- adb shell:来到模拟器linux系统的终端里,列出模拟器的目录结构:与DDMS中File Explorer界面显示的目录结构一样
- ps:运行的进程
- kill -9 pid:杀死进程
004--Android工程目录结构
- src:源代码。如果最初选择创建Activity,会有一个Activity的子类
- gen:系统自动生成的文件。R.java 中记录了项目中各种资源ID BuildConfig.java 标记项目是否可以Debug
- Android Private Libraries 用来支持各个版本的类库
- assets:资源文件
- bin:编译后的二进制文件 包括class、资源文件、dex、apk、清单文件等
- libs:工程中使用的库
- res:系统资源,所有文件都会在R文件生成资源ID
drawable:图片 layout:界面布局 menu:菜单 values:字符串、样式等数据 anim:动画 raw:原生文件 drawable-hdpi:高分辨率的图片目录 drawable-ldpi:低分辨率的图片目录 drawable-mdpi:中分辨率的图片目录 drawable-xhdpi:大分辨率的图片目录 drawable-xxhdpi:超大分辨率的图片目录
- AndroidManifest.xml:清单文件
Android 中的四大组件( Activity 、 ContentProvider 、 BroadcastReceiver 、 Service )都需要在文件中注册, 程序所需的权限也需要在此文件中声明,例如:电话、短信、互联网、 访问 SD 卡。manifest节点:pakeage:是应用安装的路径data/data的目录,手机上的 应用程序的不能有一样的包名 / 目录。 manifest节点:versionCode:应用程序版本号versionName:应用程序版本名称
- proguard.cfg:用来混淆代码的配置文件,防止别人反编译
- project.properties:标记该项目使用SDK版本号,早期版本名为:default.properties
005-Android程序打包安装过程
Android程序——编译打包——apk——签名——通过adb发布到设备上
006--Android 入门案例
案例-电话拨号
:
- 搭建界面需要组件:TextView(请输入电话号码)、EditText(xxx号码)、Button(呼叫此号码)
- 当点击Button时获取EditText中文本
- 使用Intent向系统内置的电话拨号器发送意图拨打电话
- 注册拨打电话权限android.permission.CALL_PHONE
007--四大布局
- LinearLayout(线性布局)
android:orientation=“horizontal”表示水平方向android:orientation=“ vertical ” 表示垂直方向android:gravity="right"的意思是在当前容器内的子元素右靠起的方式布局
- RelativeLayout(相对布局)
ParentLeft:true;父窗体左边ParentBottom:true;父窗体下边android:layout_centerHorizontal="true" 使组件能够水平居中android:layout_centerVertical="true" 使组件能够垂直居中layout_below: 指定某个组件,位于此组件的下方。
- TableLayout(表格布局)
- FrameLayout(帧布局)
- AbsoluteLayout绝对布局
008--Android下的单位
- dp 不依赖设备像素,依据设备自动适应大小,推荐使用
- sp 同dip/dp相似,会根据用户的字体大小偏好来缩放,专门用于设置字体的大小
009--Android点击事件的四种写法
- 通过匿名内部类来实现
- 通过内部类来实现
- 由类文件去实现监听接口
- 在布局文件中注册事件
010--测试
- 常见测试分类
- Junit 测试框架
需要在清单文件里配置:
添加指令集(manifest节点下)
targetPackage :是测试目标包指令集依赖 jar包 (application节点下![]()
011-日志信息
- 输出日志
在控制台中输入adb logcat, 然后按回车键即可看到LogCat信息,如果需要终止按Ctrl+C键即可将LogCat信息保存在文件中执行adb logcat >D:/a.txt, 则将日志输出到D:/a.txt文件中。按Ctrl+C键终止日志的输出
- Logcat的日志等级
Log.v() Log.d() Log.i() Log.w() 以及 Log.e() 。根据首字母对应VERBOSE , DEBUG,INFO, WARN ,ERROR
012--文件操作
- Environment.getExternalStorageDirectory()获取当前SDCard
- Environment.getExternalStorageState()方法获取SDCard当前状态
- Context.openFileOutput(String name, int mode)可以获取一个文件输出流
- Context.openFileInput(String name)可以获取一个文件输入流
- context.getFilesDir().getAbsolutePath();获取应用路径data/data/应用包名/file
- getCacheDir().getAbsolutePath();获取缓存目录 /data/data/应用包名/cache
- 保存文件:
context.getFilesDir()
返回的路径为:/data/data/
当前包名/files
Environment.getExternalStorageDirectory()
返回的路径为:/sdcard
其实
/sdcard只是一个引用地址,真正的地址为
/mnt/sdcard
对
SDCard进行写入文件操作,需要在清单文件中添
加权限:
<
uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- XML解析&序列化
XML解析步骤:
- 获取XmlPullParser: XmlPullParser parser = Xml.newPullParser();
- 设置XmlPullParser 的参数: parser.setInput(in, "utf-8");
- 获取解析的文档的事件类型: int type = parser.getEventType();
- 具体判断一下解析的是哪个标签
使用XmlSerializer 序列化器 生成xml的步骤
- 获取XmlSerializer实例 :XmlSerializer serializer = Xml.newSerializer();
- 设置xmlserializer序列化参数
![]()
- 开始写xml 的文档开头
- 写 xml 根节点
- 循环写其他节点
- SharedPreferences
Android平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数。使用SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在 /data/data/<package name>/shared_prefs目录下
保存:private SharedPreferences sp;sp = getSharedPreferences("itcast", Context.MODE_PRIVATE);Editor editor = sharedPreferences.edit();//获取编辑器editor.putString("name", "名称");editor.putInt("age", 4);editor.commit();//提交修改
getSharedPreferences(name,mode)方法:第一个参数:用于指定该文件的名称,名称不用带后缀,后缀会由Android自动加上。第二个参数:指定文件的操作模式,共有四种操作模式,这四种模式前面介绍使用文件方式保存数据时已经讲解过。如果希望SharedPreferences背后使用的xml文件能被其他应用读和写,可以指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE权限。
访问:SharedPreferences sharedPreferences = getSharedPreferences("itcast", Context.MODE_PRIVATE);String name = sharedPreferences.getString("name", "");int age = sharedPreferences.getInt("age", 1);
getString()方法:第二个参数为缺省值,如果preference中不存在该key,将返回 缺省值