Skip to content

chzyer-other/AndFree

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 

Repository files navigation

前言

andfree是我历经1年的android开发, 最后整理出来的, 其前身未成形时曾用于两个项目, 可能由于LZ在接触Android前较为熟悉python, php, js, 所以可能andfree中会有一些上述语言的影子, 希望Andfree能够给各位开发者带来一些便利~

使用

AndFree是一套代码, 只要把AndFree放到项目目录里面并且设置为源文件夹即可使用

协议

采用最自由的MIT开源协议

特性

  • 提供完整的数据库类封装

  • 提供常用的辅助函数封装

  • 基于Activity给其添加更多特性

  • Class-XML一对一模式提供控件封装

  • 统一全局, 唯一一个数据集类(Line), 支持JSON/MsgPack的输入和输出, 数据库输出的格式也是Line (内置msgpack-for-android)

  • Activity默认提供Activity Result路由, 不用将全部代码集中于Activity而是可以分散到子类中

  • 系统控件封装, 继承于类IWidget, 针对一些常用的控件比如button, imageview, textview, edittext, linearlayout, relativelayout进行一些封装

  • 统一ContentProvider和数据库接口

  • 内置动态配置, 主要是用于保存设置类的数据(实质是使用数据库内建一张config的表, 并做一些封装), 在我写的默认控件中也对动态配置信息进行支持, 比如给一个开关指定一个配置字段, 开关会根据用户的操作自动操作数据库 :), 自己使用的话, 语法类似于下面

    Systems.showGuide.set(true); if (Systems.showGuide.bool()){ // TODO show guide layout }

  • 还有静态的配置类, 并可设置依赖关系, 比如说我有两个模块 A, B, 两个模块都有一个Log功能, 然后我可以通过静态配置来决定这两个log功能执不执行. Conf.LOG_A.和Conf.LOG_B

    //_f可以理解为一个生成DebugField的函数.(代码里面真的是_f, 哈哈贪方便) public static DebugField LOG_A = _f(true); public static DebugField LOG_B = _f(true); 然后我还想要一个全局的LOG开关, 一关闭这个的话, 全局的LOG都不显示, 这个时候就需要依赖关系

    public static DebugField LOG = _f(true); //LOG_A和LOG_B要添加依赖关系 public static DebugField LOG_A = _f(true, LOG); public static DebugField LOG_B = _f(true, LOG); 这样, 一旦依赖的配置是False, LOG_A和LOG_B将始终被解析为false, 当LOG为true是, 其他两个依赖他的debug才起作用

  • 代码定义数据库结构, 好处是程序能根据代码自动更新数据库结构, 对, AndFree会自动更新数据库结构(前提是你要修改数据库的版本号AndFree才会检查)

  • 特性大概就这么多, 目的只有一个, 让安卓的开发更加快速, 下面还会有详细的使用说明

AndFree 重构计划

目录

  1. 数据库封装 (db)
  2. 控件封装 (widget)
  3. ContentProvider和数据库对等封装 (rdb)
  4. 网络库封装 (net)
  5. 辅助函数 (helper)
  6. 其他

一. 数据库封装 (org.chenye.db)

  1. 数据库操作

    a. 构造:

select() from() where() limit() b. 查询java result() get() c. 操作:java update() insert() delete() ```

  1. 数据库构造: 类型:

    • DBInt
    • DBBool
    • DBText
  2. 用法实例

// 构造sql
Account acc = new Account();
acc.user.set("aaa");
acc.pasw.set("123");
acc.select(acc.pasw).orderBy(acc.user);
acc.toSql(); // sql语句

// 执行查询
Line data = acc.result();

// 插入
Account acc = new Account();
acc.user = "aa";
acc.insert();

// 更新
Account acc = new Account();
acc.user.set("aa");
acc.pasw.set("123");
acc.update(acc.user);

// 定义
public static Account extends Table {
	public DBInt id;
	public DBText user;
	public DBBool pasw;
}

二. Widget (org.chenye.widget)

待添加

三. ContentProvider (org.chenye.rdb)

待添加

Releases

No releases published

Packages

No packages published

Languages