基础理论
Android系统结构由四层(或五层)结构构成,按从硬件到用户的顺序是Linux内核层、系统运行时库层(一说系统运行层和库层)、应用程序框架层和应用层。
四大组件
- Activity:具有可视化和可交互的界面
- Service:后台长期任务,但没有可视化界面
- Broadcast Receiver:广播接收器,用于响应广播
- Content Provider:标准数据共享机制,使得应用之间可是实现数据共享。
开发环境
包括JDK,Android Studio,Android SDK和AVD(安卓虚拟机)。
Android软件运行流程
- 读取应用的build.gradle文件,获取应用编译的基本信息,如版本信息、设备版本要求等。
- 读取manifests/AndroidManifest.xml清单文件,设置应用图标、标签,找到入口Activity等。
- 找到对应的Activity文件,调用onCreate()方法。
- 找到对应的布局文件,并在界面上显示相关控件信息。
build.gradle文件结构
android {
compileSdkVersion 25 //编译的SDK版本
buildToolsVersion "25.0.2" //编译工具的版本
defaultConfig { //默认设置
applicationId "cn.jxufe.iet.helloworld" //应用id
minSdkVersion 15 //最低版本要求15
targetSdkVersion 25 //目标版本号25
versionCode 1 //应用版本号
versionName "1.0" //应用版本名
}
}
AndroidManifest.xml文件结构
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" →命名空间
package="cn.jxufe.iet.helloworld"> →应用程序包名
<application
android:allowBackup="true" →是否允许备份
android:icon="@mipmap/ic_launcher" →应用程序的图标
android:label="@string/app_name" →应用程序的标签
android:supportsRtl="true" →是否支持Rtl
android:theme="@style/AppTheme"> →应用程序的主题
<activity android:name=".MainActivity"> →Activity名称,入口为MainActivity
<intent-filter> →启动的过滤条件
<action android:name="android.intent.action.MAIN" /> →启动的入口
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</ manifest >
<intent-filter>决定了当前应用的首页。
MainActivity.java文件结构
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); //调用父类的该方法
setContentView(R.layout.activity_main); //设置界面布局文件,布局文件为activity_main.xml
}
}
项目结构
- app
- manifests
- AndroidManifest.xml 清单文件
- java java源代码
- res 资源文件夹
- drawable用于存放xml图片
- layout 用于存放布局文件
- activity_main.xml
- mipmap 用于存放原生图片,图片需要按不同分辨率进行适配。启动图标必须放在此处。
- values 常量文件夹
- colors.xml 颜色常量
- dimens.xml 尺寸常量
- strings.xml 字符串常量
- styles.xml 样式常量
- Gradle Scripts 存放gradle脚本文件
资源
API文档:应用资源概览 | App architecture | Android Developers
资源的命名(标识符)仅允许使用小写字母、数字和下划线,不允许使用其它符号。 资源不能单独作为一个语句使用,需要作为某个方法的参数。
图像(drawable)
可绘制资源,路径为res/drawable/,包括位图(PNG、.9.png、JPG或GIF),或可编译为以下可绘制资源子类型的xml文件:位图文件、九宫图(可调整大小的位图)、状态列表、形状、动画可绘制对象和其它可绘制对象。
可绘制资源文件必须直接放在该目录下,不能在该目录下新建文件夹,否则会无法识别。
- 在java文件中获取可绘制资源
布局
xml文件,路径为res/layout/,通过R.layout调用。
在Activity文件的onCreat()方法中,使用setContentView()方法调用布局资源。
新增布局资源
常量
常量,包括strings.xml(xml字符串文件)、colors.xml(xml颜色文件)和
string.xml
路径为res/valus/strings.xml,写在<string>标签对中,必填属性为name,其值是唯一的标识符。
在Java中获取字符串的方法:
colors.xml
值为由#开头的六位或八位十六进制,表示RGB或ARGB。
dimens.xml
非默认文件,需要自行创建。
其值必须带单位,包括px、pt等。
styles.xml
动画
xml
原生文件
菜单
引用
统一使用R类访问资源,格式为R.资源类名.资源标识符,其中:
drawable和layout的资源标识符不含后缀。xml类的资源标识符通常为@资源类名/资源名,其中资源名为xml文件中,标签的name属性的值。