Kongzue.io

此处是一些关于开发的指导性意见。

大部分使用 Kongzue 目前已有的开源库,也有部分是比较好用的第三方库。

开始

打开 Android Studio,版本号3.1.2

框架

根据需求引入包如下:

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
//对话框
    implementation 'com.kongzue.dialog:dialog:2.4.2'
//基础框架
    implementation 'com.kongzue.baseframework:baseframework:6.6.0'
//更新组件及模块
    implementation 'com.kongzue.kongzueupdatesdk:kongzueupdatesdk:1.4.1'
//选择图片、拍照的功能
    implementation 'com.kongzue.takephoto:takephoto:2.0.8'
//网络请求框架
    implementation 'com.kongzue.baseokhttp_v3:baseokhttp_v3:3.0.3'
//底部导航栏
    implementation 'com.kongzue.tabbar:tabbar:1.5.2'
//顶部标题栏+沉浸式适配方案2
    implementation 'com.kongzue.titlebar:titlebar:1.2'
//数据库
    implementation 'com.kongzue.kongzuedb:kongzuedb:1.0.1'
//图片加载
    implementation 'com.facebook.fresco:fresco:0.12.0'
//视频播放
    implementation 'com.shuyu:GSYVideoPlayer:4.1.2'
//轮播图
    implementation 'com.youth.banner:banner:1.4.10'
//扫码
    implementation 'com.dlazaro66.qrcodereaderview:qrcodereaderview:2.0.3'
//是否需要内部浏览器,需要的话X5内核:
    implementation files('libs/tbs_sdk_thirdapp_v3.2.0.1104_43200_sharewithdownload_withfilereader_withoutGame_obfs_20170609_115346.jar')
}

处理权限

<!-- 访问网络 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 网络状态 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 相机 -->
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.CAMERA" />
<!-- IMEI、手机信息、状态 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--存储读写 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 定位相关 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<!-- 更新时需要的安装权限 -->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>

额外的,临时目录申请权限:

<provider
    android:name="android.support.v4.content.FileProvider"
    android:authorities="应用包名.fileProvider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_path" />
</provider>

file_path.xml:

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <paths>
        <external-path path="." name="external_storage_root" />
        <external-path path="" name="download"/>
    </paths>
</resources>

铺设代码:

基础类:

@Layout(R.layout.activity_main)
public class MainActivity extends BaseActivity {
    @Override
    public void initViews() {

    }
    @Override
    public void initDatas() {

    }
    @Override
    public void setEvents() {

    }
}

基础Fragment:

@Layout(R.layout.fragment_photo)
public class PhotoFragment extends BaseFragment {

    @Override
    public void initViews() {

    }

    @Override
    public void initDatas() {

    }

    @Override
    public void setEvents() {
        
    }
}

基础网络请求:

HttpRequest.getInstance(me)
        //自定义请求Header头部信息(选用)
        .setHeaders(new Parameter()
                .add("Charset", "UTF-8")
                .add("Content-Type", "application/json")
                .add("Accept-Encoding", "gzip,deflate")
        )
        //发送请求
        .postRequest("http://www.xxx.com/test", new Parameter()
                        .add("key1", "value1")
                        .add("key2", "value3")
                        .add("key4", "value4"),
                new ResponseListener() {
                    @Override
                    public void onResponse(JSONObject main, Exception error) {
                        //处理返回数据逻辑
                        if (error == null) {
                            //请求成功处理
                        } else {
                            //请求失败处理
                            Toast.makeText(me, "网络错误,请重试", Toast.LENGTH_SHORT);
                        }
                    }
                });

这是一份总结,在我目前完成的轮子的体系下快速完成一个App一开始所需要干的事情。

Framework Docs:

空祖家的APP拍照&相册选择工具: https://github.com/kongzue/TakePhoto
空祖家的对话框工具: https://github.com/kongzue/Dialog
空祖家基础框架库: https://github.com/kongzue/BaseFramework
空祖家的App更新框架: https://github.com/kongzue/KongzueUpdateSDK
BaseVolley: https://github.com/kongzue/BaseVolley
BaseOkHttp: https://github.com/kongzue/BaseOkHttp
空祖家顶部标题栏: https://github.com/kongzue/TitleBar
空祖家底部导航栏: https://github.com/kongzue/Tabbar
空祖家数据库封装: https://github.com/kongzue/DB
SharedPreferences的简易封装:https://github.com/kongzue/Preferences
Android广告图片轮播控件: https://github.com/youth5201314/banner
扫码:https://github.com/dlazaro66/QRCodeReaderView

PS:

懒惰是最大的生产源动力...XD