永续APP安卓2.0

liuxiulin f3cb89fcf6 first commit hace 10 meses
FastBleLib f3cb89fcf6 first commit hace 10 meses
app f3cb89fcf6 first commit hace 10 meses
gradle f3cb89fcf6 first commit hace 10 meses
libFrame f3cb89fcf6 first commit hace 10 meses
.gitignore f3cb89fcf6 first commit hace 10 meses
CHANGE_LOG.md f3cb89fcf6 first commit hace 10 meses
README.md f3cb89fcf6 first commit hace 10 meses
_config.yml f3cb89fcf6 first commit hace 10 meses
build.gradle f3cb89fcf6 first commit hace 10 meses
config.gradle f3cb89fcf6 first commit hace 10 meses
gradle.properties f3cb89fcf6 first commit hace 10 meses
gradlew f3cb89fcf6 first commit hace 10 meses
gradlew.bat f3cb89fcf6 first commit hace 10 meses
settings.gradle f3cb89fcf6 first commit hace 10 meses

README.md

ZFrame --Android快速开发集成框架

Summary

ZFrame是Android端的快速开发框架,此项目主要对常用的数据库、图片加载、权限处理、Http请求、常用工具类进行 统一封装,基本涵盖了除了UI以外的所有功能,易于上手,上手之后能够快速的完成项目框架搭建。 此项目主要包含五大模块:Orm数据库、OkHttp封装、Glide图片加载、PermissionHelper权限处理、工具类集合. Orm数据库采用GreenDao, Http采用OkHttp, 图片加载采用Glide, 这三个库是经过从性能和易用度综合考虑确定的.封装的基本能满足平时的使用。 如不满足可以自己进行扩展,或提交issue。

Feature

  1. Orm数据库:对GreenDao进行了封装,对常用的增删改查直接继承即可不用再写函数。
  2. Http请求:OkHttp进行了封装,主要目的就是可以异步回调时主线程中执行任务,其实这套封装是参考鸿洋大神的,进行了多处更改。感谢!
  3. 图片缓存:图片加载基本没做什么工作,但是考虑可能会换库,所以封装一层.
  4. Activity回调:封装ResultActivityHelper使用回调,免除startActivityForResult时需要在onActivityResult中写判断。
  5. 权限处理:封装6.0的权限管理控制,基于回调模式。
  6. 工具类集合:工具类是经过多个项目积累整理的,基本都会用到,涉及面比较广。

reference library version

  1. GeeenDao :3.3.0
  2. OkHtpp : 3.10.0
  3. Glide : 4.11.0
  4. Gson : 2.8.2

Gradle

app的build.gradle中添加

dependencies {
    implementation 'com.github.zcolin:ZFrame:latest.release'
}

工程的build.gradle中添加

allprojects {
	repositories {
		...
		maven { url 'https://jitpack.io' }
	}
}

Usage

HttpDemo

Http的主要操作类为com.zcolin.frame.http.ZHttp, 内置了get post upload download 等多参数函数,其中使用最多的为通过报文 协议直接将服务器返回的json报文解析成对象,进行回调,以下为此功能说明

//首先建一个返回对象的基类,此类实现ZReply接口,实现接口的三个函数,如下
public class HttpBaseReplyBean implements ZReply {
    public int    error; //协议中的字段,根据协议自定
    public String status;//协议中的字段,根据协议自定

    /**
     * 判断返回的数据是否成功,具体规则由接口协议制定
     */
    @Override
    public boolean isSuccess() {
        return "success".equals(status);
    }

    /**
     * 服务端返回的状态码
     */
    @Override
    public int getReplyCode() {
        return error;
    }

    /**
     * 服务端返回的错误信息
     */
    @Override
    public String getErrorMessage() {
        return "";
    }
}

//具体调用,ZResponse的构造第二和第三个参数分别为进度条的context和进度条信息,如果只填第一个参数,则不显示进度条
ZHttp.get(HttpUrl.URL_BAIDU_TEST, new ZResponse<BaiduWeatherReply>(BaiduWeatherReply.class, mActivity, "正在获取数据……") {
    @Override
    public void onError(int code, String error) {
        super.onError(code, error);
        //TODO 错误处理,父类已默认调用了ToastUtil.toastShort(error);
    }

    @Override
    public void onSuccess(Response response, BaiduWeatherReply resObj) {
        if (resObj.results.size() > 0) {
            BaiduWeatherReply.ResultsBean bean = resObj.results.get(0);
            textView.setText("city:" + bean.currentCity + " pm25:" + bean.pm25);
        }
    }
});

// 是否去除空/null字段。 default true
ZHtpp.setIsClearEmptyValue(boolean)
ZHtpp.setIsClearNullValue(boolean)

DB 使用

以下实体类的规则为GreenDao的官方规则,具体可以google

// 首先定义实体
@Entity(nameInDb = "NOTE", generateConstructors = false)
public class Employee {
    @Id
    public long id;

    @NotNull
    public String name;

    public String group;

    public String company;

    public Date date;
}

//daomaster为build代码时自动生成
Employee employee = new Employee();
`
`
`
DaoMaster daomaster = new DaoMaster(getDaoOpenHelper(BaseApp.APP_CONTEXT, "default").getWritableDatabase());
DaoHelper<DaoSession> daoHelper = new DaoHelper(daomaster.newSession());   
boolean b = daoHelper.insertOrReplaceObject(employee);

针对DaoMaster已经封装了一个辅助类,具体见app中的com.zcolin.frame.demo.db.DaoManager

Activity的回调处理

//继承BaseFrameActivity和 BaseFrameFrag的可以直接调用   
startActivityWithCallback(intent, new ResultActivityHelper.ResultActivityListener() {
    @Override
    public void onResult(int requestCode, int resultCode, Intent data) {
	if (resultCode == RESULT_OK) {
	    userDetail.nick_name = data.getStringExtra("data");
	    initData();
	}
    }
});

权限回调

//默认常用的权限(包括摄像头、设备信息、SD卡、联系人、拨打电话权限)
PermissionHelper.requestCameraPermission(mActivity, new PermissionsResultAction() {
    @Override
    public void onGranted() {
        
    }

    @Override
    public void onDenied(String permission) {

    }
});

//默认权限中没有的,根据需要自己直接申请
PermissionHelper.requestPermission(this, new String[]{Manifest.permission.CAMERA,Manifest.permission.READ_EXTERNAL_STORAGE}, new PermissionsResultAction() {
    @Override
    public void onGranted() {

    }

    @Override
    public void onDenied(String permission) {

    }
});

常用工具类介绍与使用 在Frame框架Utils包中,可以查看源码或者查看生成的JavaDoc。 常用包括:

  • ActivityUtil :Activity 相关操作 工具类。
  • AppUtil:APP管理工具类,如获取应用相关信息,应用退出 重启 安装 卸载.判断程序运行状况等函数的定义。
  • ArrayUtils: 数组操作工具类。
  • BitmapUtil: Bitmap工具类,如图片缩放,保存图片,复制图片,圆角处理等。
  • CalendarUtil:日期操作工具类,主要格式化时间。
  • DeviceUtil:设备操作工具类,如获取设备识别码,获取设置屏保时间,获取设置字体缩放大小等。
  • DisplayUtil:像素转换工具类,如px互转dp,获取设备density等。
  • FastClickUtils:防止控件被重复点击的辅助类。
  • FileOpenUtil:使用第三方程序打开文件操作工具类。
  • FileUtil:文件操作工具类,如文件拷贝,文件读写操作。
  • GsonUtil:使用gson对Json数据和对象互转的工具类。
  • KeyBoardUtil:软键盘操作如弹出、关闭工具类。
  • LogUtil:日志操作工具类。
  • MD5Util&RSAUtils:加密解密工具类。
  • RegexUtil:正则工具类,匹配常用的如邮箱,手机号等。
  • ScreenUtil:屏幕工具类,如获取屏幕宽高,获取截图等。
  • SDCardUtil:SD卡工具类,如获取sd卡是否可用,获取sd可用容量等。
  • SpannableStringBuilderUtil:SpannableStringBuilder的工具类。
  • SpannableStringUtil:SpannableString的工具类。
  • SPUtil:SharedPreferences配置文件读写封装。
  • StateListUtil:StateList的构建类。
  • StringFormatUtil:字符串格式化工具类。
  • StringUtil:String相关操作工具类。
  • SystemDownloadApk:托管系统下载工具类。
  • SystemIntentUtil:调用系统Intent工具类。
  • ToastUtil:Toast工具类,可以在子线程调用。

MIT