Skip to content

基础理论

Android系统结构由四层(或五层)结构构成,按从硬件到用户的顺序是Linux内核层、系统运行时库层(一说系统运行层和库层)、应用程序框架层和应用层。

四大组件

  • Activity:具有可视化和可交互的界面
  • Service:后台长期任务,但没有可视化界面
  • Broadcast Receiver:广播接收器,用于响应广播
  • Content Provider:标准数据共享机制,使得应用之间可是实现数据共享。

开发环境

包括JDKAndroid StudioAndroid SDKAVD(安卓虚拟机)。

Android软件运行流程

  1. 读取应用的build.gradle文件,获取应用编译的基本信息,如版本信息、设备版本要求等。
  2. 读取manifests/AndroidManifest.xml清单文件,设置应用图标、标签,找到入口Activity等。
  3. 找到对应的Activity文件,调用onCreate()方法。
  4. 找到对应的布局文件,并在界面上显示相关控件信息。

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文件中获取可绘制资源
ImageView iv=(ImageView)findViewByID

布局

xml文件,路径为res/layout/,通过R.layout调用。 在Activity文件的onCreat()方法中,使用setContentView()方法调用布局资源。

新增布局资源

常量

常量,包括strings.xml(xml字符串文件)、colors.xml(xml颜色文件)和

string.xml

路径为res/valus/strings.xml,写在<string>标签对中,必填属性为name,其值是唯一的标识符。

在Java中获取字符串的方法:

string str=

colors.xml

值为由#开头的六位或八位十六进制,表示RGB或ARGB。

int color =getResoures.getColor(R.color.资源标识符);
<TextView android:textColor="@">

dimens.xml

非默认文件,需要自行创建。

其值必须带单位,包括pxpt等。

styles.xml

动画

xml

原生文件

菜单

引用

统一使用R类访问资源,格式为R.资源类名.资源标识符,其中:

  • drawablelayout的资源标识符不含后缀。
  • xml类的资源标识符通常为@资源类名/资源名,其中资源名为xml文件中,标签的name属性的值。