Android01
android的体系结构
Android系统架构分为四层
第一,应用app层
第二,应用程序框架层
第三,核心的代码库(C,C++编写的)
第四,Linux的内核
举个例子
我写了个闹钟的App程序,每天早上7点钟开始响铃,这个闹钟.App在应用层,到了7点钟,开始调用应用框架层的通知管理
程序(Notification Manager),在调用核心代码库的媒体框架(Media Framework),在调用Linux内核的
音频驱动(Audio Drivers),然后,一层一层的往上传,最后开始响铃.
开发环境的目录结构
- build-tools 编译需要用到的工具
- docs 开发的离线文档
- extras 额外工具,模拟器加速器,向下兼容的jar包
- platforms 开发需要的平台,每个平台的android.jar在对应的文件夹里面
- platform-tools 开发调试的工具 adb.exe 一个重要的调试桥
- sources android.jar的源码
- system-images 模拟器创建需要的镜像
- tools 开发辅助需要用到的工具,模拟器.exe
adb常见指令
adb:android debug bridge 安卓调试桥 (当adb掉线了用第一个和第二个)
- adb devices 查看链接到电脑上的所有的手机设备。(模拟器,真实的手机)
- adb kill-server 杀死adb的调试桥
- adb start-server 重新启动adb的调试桥
- adb install xxx.apk 把电脑上的一个文件安装到模拟器(真实的手机)
- adb uninstall 应用程序的包名 从手机卸载一个应用,参数是应用程序的包名,DDMS,查看应用程序的包名(R文件的路径)
ddms简介
dalvik debug manager system
android应用的目录结构
- src文件夹,java源代码 onCreate()界面被开启调用的方法 //设置应用程序显示的ui setContentView(R.layout.activity_main);
- gen目录 自动生成的文件夹 ,里面保存的是res资源文件的引用
- android4.1.2 代表的是引用的jar包
- libs文件夹 代码的三方jar包。会自动的被添加到dependencies目录下
- android dependencies 开发依赖的jar包
- bin 编译生成的临时文件和二进制文件
res目录
- drawable-ldpi low 低分辨率 小图
- drawable-mdpi middle 中等分辨率
- drawable-hdpi high高分辨率
- drawable-xhdpi x加大高分辨率
- drawable-xxhdpi 加大再加大的分辨率
- layout 用xml文件编写的布局
- menu 菜单文件夹
AndroidManifest.xml
清单文件,配置应用程序的版本,图标,名称等重要信息。
android工程的目录结构
电话拨号器
public void onClick(View v) {
//Toast.makeText(MainActivity.this, "按钮被点击了", Toast.LENGTH_SHORT).show();
Intent intent = new Intent();//创建意图
//设置动作,拨打的动作
intent.setAction(Intent.ACTION_CALL);
//设置数据, URL http://www.xxx.com 统一资源定位符 一般表示的是网络上的路径
//http://www.baidu.com ftp://xunlei.com
//Uri 统一资源定位符, tel://
intent.setData(Uri.parse("tel://110"));
startActivity(intent);
}
应用程序的权限
在清单文件中配置
应用程序开发的流程
- res–>layout文件夹 修改xml布局文件
- src–>.java文件编写代码
- 找到关心的控件 findViewById(R.id.xxx);
- 设置点击事件,或者获取数据
- 记得权限。
线性布局入门
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我是按钮01" />
</LinearLayout>
相对布局的使用
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:id="@+id/bt_middle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerInParent="true"
android:layout_centerVertical="true"
android:text="o" />
</RelativeLayout>
帧布局
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:layout_width="300px"
android:layout_height="300px"
android:layout_gravity="center"
android:background="#ff0000" />
</FrameLayout>
表格布局
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<TextView
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_weight="2"
android:text="姓名:" />
<EditText
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_weight="5"
android:hint="请填写姓名" />
</TableRow>
</TableLayout>
绝对布局
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="87dp"
android:layout_y="218dp"
android:text="CheckBox" />
</AbsoluteLayout>