一、创建项目

a.点击左上角的《四条横线》—《文件》—《新建》—《新建项目》

b.根据需要选择对应的模板,一般默认选择《Empty Activity》—《下一步》

c.根据自己的需要设置《Name》—《Save location》—《Language》—《Minimum SDK》,其他默认选择即可

二、认识开发界面

1.项目目录

二级文件夹 三级文件夹 文件名 作用
manidests AndroidManifest

以xml格式定义软件配置(权限、版本等)

声明页面、服务等

java 存放Java/Kotlin代码
包名 业务代码
MainActivity 初始页面代码
包名(androidTest) 需要在设备上运行的测试代码
包名(test) 纯Java/Kotlin逻辑的测试代码
res 存放图片、布局等文件
drawable 存放图片、按钮等绘制资源
ic_launcher_backgroud 图标背景层
ic_launcher_foreground 图标前景层
layout 存放页面、菜单、提示框等布局文件
activity_main 初始页面布局
mipmap 存放软件启动图标
ic_launcher 普通形状的启动图标
ic_launcher_round 图形启动图标
values 存放值(宏定义)
colors 定义颜色
strings 定义字符串
themes 应用主题样式(默认)
themes(night) 应用主题样式(夜间)
xml 存放非界面类的配置文件
backup_rules 软件数据备份规则
data_extraction_rules 数据提取规则
GradleScripts 存放gradle构建脚本

2.左侧工具栏


3.顶部工具栏

三、代码开发

1.xml布局(前端)

1.1创建文件夹

a.点击《res》—右键—《新建》—《Android Resource Directory》

b.根据需要设置《Directory name》,可以根据需要设置《Resource type》,里面有常见的文件夹类型


1.2需要注册的文件(Activity页面为例)

它们:Activity页面 / Service后台服务 / ContentProvider跨应用共享数据 / Broadcast接收器等

它们并不是都需要xml文件,但都必须要有其对应的代码(定义类)和在AndroidManifest注册(声明一个该类的变量)——可以理解为一个特殊的类变量,一个类只有一个变量

1.2.1创建xml布局文件

方法一:自动创建
a.点击《res/layout》—右键—《新建》—《Activity》—根据需要点击创建的Activity,一般为《Empty View Activity》

分类 文件 作用
导航方式 Bottom Navigation 自带底部导航的页面
Navigation Drawer 自带侧边栏的页面
Tabbed Views 自带顶部选项卡的页面
UI交互 Fullscreen Views 全屏页面
Scrolling Views 可以滚动的页面
Empty Views 啥都没有的页面(高度自定义)
适配场景 Android TV Blank 电视端,焦点导航
Responsive Views 响应式布局页面(自适应)
Primary/Detail Flow 适配大屏和小屏
架构模式 Fragment + ViewModel MVVM架构,数据与UI分离
Settings Views 自动存储设置

b.根据需要调整《Activity Name》等,点击《完成》。

会自动在《res/layout》下创建xml文件

在《java/包名》下创建java文件

并在《manifest/AndroidManifest》注册Activity

方法二:手动创建
a.点击《res/layout》—右键—《新建》—《Layout Resource File》创建xml布局文件

b.设置《File name》—《确定》

c.点击《java/包名/activity》—《新建》—《Java类》创建逻辑代码文件

d.选择《类》—《回车》

e.在《manifest/AndoridManifest》注册该Activity

1.2.2使用

a.点击右上角《v》,可设置xml文件的浏览方式

b.用xml格式编码布局,通过不断的套娃使用LinearLayout、RelativeLayout等,将一个大的页面分为N个小的块,再在块里面放UI组件:例如LinearLayout里面有N个RelativeLayout,每个再加上UI组件
c.在对应的Java文件编辑其逻辑


1.3不需要注册的文件(Toolbar工具栏为例)

复杂的需要专门用一个xml文件来定义布局:ActionBar导航 / Toolbar工具栏 / Dialog对话框 / PopupWindow弹窗 / ListView列表等

不复杂的可以直接在activity.xml通过android::属性定义布局:TextView文本框 / Button按钮 / ImageView图片框等

方法一:专门用一个xml文件
 a.点击《res/layout》—右键—《新建》—《Layout Resource File》创建xml布局文件

b.设置《File name》—《确定》

c.用xml格式编码布局,通过不断的套娃使用LinearLayout、RelativeLayout等,将一个大的页面分为N个小的块,再在块里面放UI组件:例如LinearLayout里面有N个RelativeLayout,每个再加上UI组件

d.在Activity中引用

方法二:直接在Activity中使用

2.逻辑代码(后端)

2.1java代码目录(基于Android 系统内置的 SQLite 数据库工具类)

文件夹名(默认都在java/包名下) 文件名(例子) 作用
entity User 数据实体类
db AppAdapter 数据库管理类(定义和操作全部数据表)
adapter UserAdapter 适配器(将数据库的数据与UI绑定)
activity MainActivity 页面实体类
Util 一些工具方法
service等

2.2创建文件夹

a.点击《java/包名》—右键—《新建》—《软件包》

b.输入文件夹名


2.3用户交互逻辑

2.3.1需要注册的

a.点击《java/包名/activity》的对应文件,在《onCreate》方法中与xml文件进行绑定

b.通过生命周期方法来定义逻辑

2.3.2不需要注册的

a.点击《java/包名/activity》的对应文件,在类里面定义成员变量
b.在《onCreate》方法中通过findViewByxx与组件进行绑定

c.通过setOnClickListener等方法设置监听器来实现逻辑


2.4数据库逻辑(基于Android 系统内置的 SQLite 数据库工具类)

a.在《java/包名/entity》(没有entity文件夹就创建)中定义数据模型(实体类),并创建构造方法和相应的get和set方法

b.在《java/包名/db》(没有db文件夹就创建)中定义《AppAdapter》,并定义数据库配置(名称、版本) + 相关数据表的常量定义 + 表的SQL语句 + 数据库构造方法 + 相关数据表的操作

package com.example.csdn_article.db;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import java.util.ArrayList;

public class AppDatabaseHelper extends SQLiteOpenHelper {

    // 数据库名称(会在设备中生成此名称的数据库文件)
    private static final String DATABASE_NAME = "multi_table_db";
    // 数据库版本号(升级时需递增)
    private static final int DATABASE_VERSION = 1;

    // ------------------------ User表相关常量 ------------------------
    public static final String TABLE_USER = "user";
    public static final String USER_COLUMN_ID = "id";
    public static final String USER_COLUMN_NAME = "name";
    public static final String USER_COLUMN_EMAIL = "email";
    public static final String USER_COLUMN_AGE = "age";

    // 创建User表的SQL语句
    private static final String CREATE_TABLE_USER = "CREATE TABLE " + TABLE_USER + "("
            + USER_COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
            + USER_COLUMN_NAME + " TEXT NOT NULL,"  
            + USER_COLUMN_EMAIL + " TEXT UNIQUE,"    
            + USER_COLUMN_AGE + " INTEGER"
            + ")";

    // 构造方法
    public AppDatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    // 数据库第一次被创建时调用(初始化所有表)
    @Override
    public void onCreate(SQLiteDatabase db) {
        // 执行创建表的SQL语句,顺序很重要(有外键的表要在被关联表之后创建)
        db.execSQL(CREATE_TABLE_USER);       // 创建User表

    }

    // 数据库版本升级时调用(版本号增加时)
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // 简化处理:删除旧表,创建新表(实际开发中应考虑数据迁移)
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_USER);
        onCreate(db);
    }

    // ------------------------ User表的操作 ------------------------

    /**
     * 添加用户
     * @param user 要添加的用户对象
     * @return 新添加记录的ID,-1表示失败
     */
    public long addUser(User user) {
        // 获取可写数据库
        SQLiteDatabase db = this.getWritableDatabase();

        // 用ContentValues存储字段值(类似键值对)
        ContentValues values = new ContentValues();
        values.put(USER_COLUMN_NAME, user.getName());    
        values.put(USER_COLUMN_EMAIL, user.getEmail());
        values.put(USER_COLUMN_AGE, user.getAge());

        // 插入数据到表中,返回新记录的ID
        long id = db.insert(TABLE_USER, null, values);
        db.close(); // 关闭数据库连接
        return id;
    }

}

c.在Java代码中定义《AppAdapter》变量,调用该变量的数据库操作方法获取、更改数据

3.运行虚拟机测试


3.1创建虚拟机

a.点击《Device Manager》—《Vritual》—《Create Device》

b.按照需求选择《Category》—虚拟机—《下一步》

c.根据需求选择API版本(小于创建项目设置的API版本将运行不了该项目)

d.最后查看一下虚拟机配置,点击《完成》


3.2运行虚拟机

a.点击《运行》(一定要有足够的内存运行,否则报错The emulator process for AVDPixel_7_APl34 has terminated.)
b.点击《Running Devices》,查看运行的虚拟机

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐