Skip to content

基础理论

Note

作业的项目通常选第一个自行添加所有必须目录,防止出现未知的框架的异常,有时候其它会没有label。
屏幕截图 2026-05-13 121950

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

是一款应用于移动设备的操作系统,其底层基础是Linux内阁,以Java作为主要语言。

四大组件

  • Activity:具有可视化和可交互的界面

    单个应用程序应该包含至少一个默认Activity,这个默认的Activity会作为程序的打开入口,也是首页。

  • Service:后台长期任务,但没有可视化界面
  • Broadcast Receiver:广播接收器,用于接收和响应广播。

    没有界面,但可以通过启动一个activity或service来响应收到的消息,或通过Notification Manager通知用户。

  • 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文件结构

1
2
3
4
5
6
7
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); //调用父类的该方法
        setContentView(R.layout.activity_main); //设置界面布局文件,布局文件为activity_main.xml
    }
}

调试

可以使用Log类调试,输出信息在LogCat视图进行查看。或者,也可以使用断点调试

Log类常用方法:

Screenshot_20260608-190758

项目结构

  • 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

资源的命名(标识符)仅允许使用小写字母、数字和下划线,不允许使用其它符号。
资源不能单独作为一个语句使用,需要作为某个方法的参数。

在java代码中使用资源:R.资源类名.资源标识符

在xml文件中引用资源:@[包名:]资源类名/资源标识符

图像(drawable)

可绘制资源,路径为res/drawable/,包括位图(PNG、.9.png、JPG或GIF),或可编译为以下可绘制资源子类型的xml文件:位图文件、九宫图(可调整大小的位图)、状态列表、形状、动画可绘制对象和其它可绘制对象。

可绘制资源文件必须直接放在该目录下,不能在该目录下新建文件夹,否则会无法识别。

  • 在java文件中获取可绘制资源

    ImageView iv=(ImageView)findViewByID
    

Shape

一种xml格式的图像。允许设置以下标签:

  • solid:填充颜色
  • padding:内容和边缘的边距
  • corners:圆角
    • radius:半径尺寸
  • gradient:渐变颜色、方向
    • startColor/endColor:开始和结束的颜色
  • stroke:描边颜色、粗细
  • size:尺寸

布局

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

在Activity中使用资源

onCreate()方法中调用setContentView(id resid)

在java中使用资源

R.layout.不含后缀的文件名

常量

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

string.xml

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

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

string str=getResoures.getString(R.string.资源标识符)

colors.xml

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

在java文件中获取颜色

int color =getResoures.getColor(R.color.资源标识符);

在xml文件中获取颜色

<TextView android:textColor="@color/资源标识符">

dimens.xml

尺寸资源。非默认文件,需要自行创建。

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

styles.xml

样式资源,能且仅能够在xml文件中定义样式,在java中的资源类名是style

样式与样式之间可以继承。

<!--样式1,设置文本字体大小为20sp,文本颜色为#008-->
<style name="parentText" >
<item name="android:textSize">20sp</item>
<item name="android:textColor">#008</item>
</style>
<!--样式2,父样式是parentText,内容距边界20px,文本颜色#0FF-->
<style name="langText" parent="parentText">     <!--指定父样式是parentText-->
<item name="android:padding">20px</item>
<item name="android:textColor">#0FF</item>
</style>

在activity中引用样式

该方法要放在setContextView前,即一定要先设置主题再加载布局资源

setTheme(R.style.资源标识符);
setContextView(R.layout.资源标识符)

在xml中引用主题资源

如果作用在所有activity上:在AndroidManifest.xml<application>属性上添加

作用在单个activity上:在相应的属性上添加。

如,对某个activity应用主题:

<activity android:name=".MainActivity"
android:theme="@style/MyTheme">

引用

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

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