项目实训—基于AI的智能视频剪辑器(一)项目架构搭建


前言

本次项目实训目标打造一款智能视频剪辑APP,所提供的基本功能为:由用户选择本地视频进行上传,并且提供希望剪辑的主要人物图像,系统将智能检测出人物所在视频片段,并且合成人物cut视频,用户自行选择下载。

在本次实训中,我所负责的部分是移动端代码的编程,本周主要完成的工作是项目基本架构的搭建。


一、项目架构搭建

1.项目目录结构

项目意图打造一款 Android 端app,移动端目录结构基本如下:
在这里插入图片描述

  • activity 目录:主要活动的集合,项目预计采用XPage框架,将以少量主要的Activity控制多个Fragment页面
  • adapter 目录:适配器类集合,用于连接后端数据和前端显示
  • core 目录:核心类的集合,包括一些基类以及框架的核心类
  • fragment 目录:嵌入Activity的UI片段的集合
  • utils 目录:工具类的集合
  • widget 目录:widget小控件类的集合
  • MyApp:Application类
  • res 目录:存放定义应用程序菜单资源的XML文件
  • AndroidManifest.xml:整个Android项目的配置文件,注册四大组件,为应用程序添加权限声明

2. 主要框架引入

项目中主要使用了X系列的框架,包括:

XUI 一个简洁的Android原生UI框架,包括UI组件、UI主题样式、UI资源和UI辅助工具
XPage 一个方便的fragment页面框架,以通用的Activity作为壳,Fragment作为页面填充展示,并且能够像Activity那样自由的切换和数据交互
XRouter 一个轻量级的Android路由框架,基于ARouter上进行改良,优化Fragment的使用,可结合XPage使用
XHttp2 一个功能强大的网络请求库,使用RxJava2 + Retrofit2 + OKHttp组合进行封装。支持多种Http请求方式,提供大量丰富的网络请求拦截器
XUtil 一个方便实用的Android工具类库。收录了Android开发过程中常用的工具类,并进行简单的分类,易于查询使用
XUpdate 一个轻量级、高可用性的Android版本更新框架
XAOP 一个轻量级的AOP(面向切片编程)应用框架

创建 x-library.gradle 文件,以引入X系列框架,并将X-Library依赖添加到 build.gradle 文件中

apply plugin: 'com.xuexiang.xaop' //引用XAOP插件
apply plugin: 'com.xuexiang.xrouter' //引用XRouter-plugin插件实现自动注册

//自动添加依赖
configurations.each {
   
    configuration ->
    def dependencies = getProject().dependencies
    if (configuration.name == "implementation") {
   
   
        //为Project加入X-Library依赖
        //XUI框架
        configuration.dependencies.add(dependencies.create(deps.xlibrary.xui))
        configuration.dependencies.add(dependencies.create(deps.androidx.appcompat))
        configuration.dependencies.add(dependencies.create(deps.androidx.recyclerview))
        configuration.dependencies.add(dependencies.create(deps.androidx.design))
        configuration.dependencies.add(dependencies.create(deps.glide))
        //XUtil工具类
        configuration.dependencies.add(dependencies.create(deps.xlibrary.xutil_core))
        //XAOP切片
        configuration.dependencies.add(dependencies.create(deps.xlibrary.xaop_runtime))
        //XUpdate版本更新
        configuration.dependencies.add(dependencies.create(deps.xlibrary.xupdate))
        //XHttp2
        configuration.dependencies.add(dependencies.create(deps.xlibrary.xhttp2))
        configuration.dependencies.add(dependencies.create(deps.rxjava2))
        configuration.dependencies.add(dependencies.create(deps.rxandroid))
        configuration.dependencies.add(dependencies.create(deps.okhttp3))
        configuration.dependencies.add(dependencies.create(deps.gson))
        //XPage
        configuration.dependencies.add(dependencies.create(deps.xlibrary.xpage_lib))
        //页面路由
        configuration.dependencies.add(dependencies.create(deps.xlibrary.xrouter_runtime))
    }

    if (configuration.name == "annotationProcessor") {
   
   
        //XPage
        configuration.dependencies.add(dependencies.create(deps.xlibrary.xpage_compiler))
        //页面路由
        configuration.dependencies.add(dependencies.create(deps.xlibrary.xrouter_compiler))
    }

    if (configuration.name == "debugImplementation") {
   
   
        //内存泄漏监测leak
        configuration.dependencies.add(dependencies.create(deps.leakcanary))
    }
}

configurations.all {
   
   
    resolutionStrategy.force deps.okhttp3
}

在 util 文件夹下,创建 XBasicLibInit.java 文件,来完成X系列基础库的初始化,在 MyApp.java 中调用 init 函数,使得项目运行即可初始化基础库

public final class XBasicLibInit {
   
   

    private XBasicLibInit() {
   
   
        throw new UnsupportedOperationException("u can't instantiate me...");
    }

    /**
     * 初始化基础库SDK
     */
    public static void init(Application application) {
   
   
        //工具类
        initXUtil(application);

        //网络请求框架
        initXHttp2(application);

        //页面框架
        initXPage(application);

        //切片框架
        initXAOP(application);

        //UI框架
        initXUI(application);

        //路由框架
        initRouter(application);
    }

    /**
     * 初始化XUtil工具类
     */
    private static void initXUtil(Application application) {
   
   
        XUtil.init(application);
        XUtil.debug(MyApp.isDebug());
        TokenUtils.init(application);
    }

    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值