Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

568240761/AndroidProjectTemplate

Repository files navigation

AndroidProjectTemplate

新建Android项目时,需要重新配置,这样会比较太慢;而且有些工具类可以重复使用,粘来粘去又很麻烦;所以就根据以往的项目经验再加上现在很流行的Jetpack和Kotlin协程整理出了这个快速新建Android项目模板。

项目基本配置:

compileSdkVersion 30
buildToolsVersion "30.0.2"
minSdkVersion 21
targetSdkVersion 30

在项目中Jetpack使用的模块如下:

其他模块的可以根据自身需求进行添加。

项目使用的是Android推荐应用架构,架构图如下:

架构图

注意,项目并不涉及SQLite,如果需要请自行添加;网络请求库直接使用的okhttp,并没有用retrofit

模块介绍

为啥要分成模块呢?

因为以前在外包公司呆过,看到过杂乱无章的项目,代码粘来粘去那是常事,因此也常碰到一些稀奇古怪的Bug。慢慢地就意识到项目如果按功能分模块,不仅维护、复用方便,工作效率也会提高,最关键的稀奇古怪的Bug少了。

app

开发模块;不同的项目,UI风格不同,业务不同,所以大多数得重新编写代码,把开发工作都集中在这个模块里,其他模块复用。

UI相关的代码写在AppActivity/AppFragment的子类以及xml布局文件中里,业务相关的代码写在AppViewModel的子类里,数据相关的代码写在AppRepository的子类里。

module_basic

基本模块,不包含任何业务逻辑代码。

类的简单介绍:

  • BasicActivity,Activity的封装类;
  • BasicFragment,Fragment的封装类;
  • ActivityManager,Activity的管理类;
  • ObservableManager,数据变化通知管理类;
  • PermissionManager,动态权限管理类;
  • CloseProcessHandler,避免应用崩溃后重启的类。

module_file_provider

分享文件模块;当需要向其他应用分享文件时,需要依赖该模块。

从 Android 7.0 开始,向其他应用分享文件的 Uri 从 file:// 替换为 content://。

注意,一定要根据实际业务需求去更改配置文件(res/xml/file_provider_filepath.xml)。

类的简单介绍:

  • FileProviderUtil,FileProvider类相关的工具类。

module_image

图像模块,不包含任何业务逻辑代码。

使用了kotlin协程和图片加载库glide

示例展示:

ImageLoader.showImage(
 context = activity,
 imageView = imageView,
 any = R.drawable.image_shape_placeholder)

module_log

日志模块,类的简单介绍:

  • Log.kt,打印日志相关方法的Kotlin文件;

module_network

网络模块,不包含任何业务逻辑代码。

使用了kotlin协程和网络请求库okhttp,功能如下:

  • 支持get、head、post、delete、put、patch网络请求方法;
  • 支持Content-Type为表单、json、multipart/form-data以及上传文件时自定义Content-Type;
  • 支持显示上传、下载文件的进度。

示例展示:

RequestBuilder().url("https://www.baidu.com").build()

module_storage

共享存储模块,访问共享存储空间中的文件。

module_util

工具模块,不包含任何业务逻辑代码。

类的简单介绍:

  • AppInfoUtil,获取应用信息的工具类;
  • DateUtil,时间相关的工具类;
  • DeviceUtil,关于手机设备方面的工具类;
  • GsonUtil,gson相关的工具类;
  • JavaReflectUtil,反射工具类;
  • MessageDigestUtil,消息摘要相关的工具类;
  • ProcessUtil,进程方面的工具类;
  • ResourcesUtil,Resources类相关的工具类。

适配问题

Android 8.0

Activity的透明主题崩溃问题该异常为:

Caused by: java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation

大概意思就是说透明的主题设置了界面方向(android:screenOrientation),我们可以去掉屏幕方向或者改为全屏。

<style name="Translucent_Fullscreen" parent="Theme.AppCompat.Light.NoActionBar">
 <item name="android:windowBackground">@android:color/transparent</item>
 <item name="android:windowIsTranslucent">true</item>
 <item name="android:windowFullscreen">true</item>
</style>

About

快速搭建Android项目

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /