Android无关业务公共库

本文介绍了一款用于加速应用开发的通用库,该库集成了网络请求、图片加载、文件下载等功能模块。提供了丰富的示例代码,展示了如何使用这些功能进行高效开发。

#####闲来无事抽取了一个无关业务的公共库以备以后快速开发,此库还不太完善,还需不断改善 使用 Blankj大神的部分工具类 项目地址github #####此库目前包含有

  • 网络请求
  • 图片加载
  • 文件下载
  • 下载进度
  • 权限安全操作
  • 图片预览
  • 三方分享&登录

#####每个功能组件都有默认实现,helper为入口,直接调用使用,使用接口暴露出服务,所以在更换底层框架时重新实现服务接口即可。

  • 网络请求部分默认使用Okhttp,Retrofit,RxJava实现
  • 图片使用Glide
  • 权限使用RxPermission
  • 图片预览类今日头条效果,是个完整的组件
  • 三方分享,登录组件使用友盟

#####示例代码

  • 请求接口 可在请求前全局设置网络请求结果的转换器,NetworkHelper.getDefault().setConvert(INetworkResultConvert convert);默认为json转实体类,可自行实现INetworkResultConvert接口,设置你想要的转换器,xml转换之类的。
Params params = new Params();
params.param("start", start);
params.param("count", count);
NetworkHelper.getDefault().get(mView, "v2/movie/top250", params, new DefaultResponseCallBack<String>() {
            @Override
            public void success(String result) {
                mView.requestMovieSuccess(result);
            }

            @Override
            public void onStart(IView view) {
                //设置加载框可否取消
                view.showLoading(true);
            }
        });

复制代码
  • 下载文件
NeedWifiOperate.getDefault().networkTypeShouldBeWifi(new DefaultNetworkTypeCallBack(this) {
            @Override
            public void wifi(int netType) {
                downloadFile();
            }
        }.setDialogOperateListener(new DialogOperateAdapter() {
            @Override
            public void positive(Context context, Dialog dialog) {
                downloadFile();
            }
        }));
        
private void downloadFile() {
        File file = new File(CommonApplication.context.getCacheDir(), System.currentTimeMillis() + ".apk");
        DownloadFile downloadFile = new DownloadFile("http://gdown.baidu.com/data/wisegame/13095bef5973a891/QQ_786.apk", file, true, new ChangeViewWithProgressListener(tvExample));
        mPresenter.downloadFile(downloadFile);
    }

NetworkHelper.getDefault().download(mView, downloadFile, new FileCallBack() {
            @Override
            public void downloadSuccess(File file) {
                mView.downloadFileSuccess(file);
            }

            @Override
            public void downloadFail(Throwable e) {
                mView.downloadFileFail(e);
            }
        });
复制代码
  • 加载网络图片可带进度
String url = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999" +
                "_10000&sec=1516793144571&di=01beb0d58d63c328051647c96c7d3742" +
                "&imgtype=0&src=http%3A%2F%2Fi1.hdslb.com%2Fbfs%2Farchive%2F5" +
                "8619c927133fd015f1656ea505cef48c20089ba.jpg";
ImageHelper.getDefault().loadImage(this, new DownloadImage.Builder()
                .path(url)
                .targetView(ivExample)
                .memoryCache(false)
                .diskCache(false)
                .build());
复制代码
  • 加载本地图片
NeedPermissionOperate.getDefault().buildSafeExternalStoragePath(this, "scene_photo.jpg", 
new MustGrantPermissionCallBack(this) {
            @Override
            public void granted(Context context, String result) {
                ImageHelper.getDefault().loadImage(context, 
                new DownloadImage.Builder().path(result).targetView(ivExample).build());
            }
        });
复制代码
  • 请求权限
PermissionHelper.getDefault().requestPermissions(this, new MustGrantPermissionCallBack(this) {
            @Override
            public void granted(Context context, String result) {

            }
        }, Permission.cameraPermission());
复制代码
  • 图片预览
String[] images = new String[3];
images[0] = "http://p9.pstatp.com/large/615c0002e579e79689d0";
images[1] = "http://p3.pstatp.com/large/615e00012d933c0d545f";
images[2] = "http://p1.pstatp.com/large/615c0002e578aee415e6";
ImagesPreviewActivity.startImagesPreview(this, images, 0);
复制代码
  • 三方分享 你需要在share&login组件库的ShareLoginApplication和Manifest中设置三方平台的appkey,不然不能正常使用该组件 可在ThirdPartyPanelHelper中重新定义需要的分享版样式
SharePanelActivity.startShare(this, new ShareInfo("hello"), new IThirtyPartyShareListener() {
            @Override
            public void onShareStart(String platform) {
                showLoading();
                LogUtils.e("onShareStart: " + platform);
            }

            @Override
            public void onShareEnd(String platform) {
                dismissLoading();
                LogUtils.e("onShareEnd: " + platform);
            }

            @Override
            public void onShareError(String platform, Throwable throwable) {
                dismissLoading();
                ToastUtils.showToast(throwable.getMessage());

            }

            @Override
            public void onShareCancel(String platform) {
                dismissLoading();
                LogUtils.e("onShareCancel: " + platform);
            }
        });
复制代码
  • 三方登录
ThirdPartyLoginHelper.getDefault().login2QQ(this, new IThirtyPartyLoginListener() {
            @Override
            public void loginStart(String platform) {
                
            }

            @Override
            public void loginSuccess(String platform, ThirdPartyUserInfo userInfo) {

            }

            @Override
            public void loginError(String platform, Throwable throwable) {

            }

            @Override
            public void loginCancel(String platform) {

            }
        });
复制代码

tips:这里的网络加载框是我默认设置的菊花转圈圈,你觉得适合就用,不适合你的项目话就自己在BaseActivity里重新实现这三个方法,并在用户自主取消请求时调用ObservableManager.getInstance().stopObserver();

void showLoading(boolean cancelable);
void showLoading();
void dismissLoading();
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值