博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android无关业务公共库
阅读量:6224 次
发布时间:2019-06-21

本文共 5233 字,大约阅读时间需要 17 分钟。

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

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

#####每个功能组件都有默认实现,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
() { @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();复制代码

转载地址:http://jqfna.baihongyu.com/

你可能感兴趣的文章
网卡绑定的7种模式
查看>>
人生长恨水长东
查看>>
PCB的初次窥探
查看>>
如何巧妙的使用ArrayList的Clone方法
查看>>
[转] 基于NodeJS的前后端分离的思考与实践(五)多终端适配
查看>>
Oracle 查看表结构视图
查看>>
Virtual servers on a Raspberry Pi with the light weight OS virtualization system Docker!
查看>>
一起学Android之Intent
查看>>
day1作业二:多级菜单操作
查看>>
php 构造函数 __construct()
查看>>
1117 Eddington Number
查看>>
图片加载之AFNetwork(上)
查看>>
递归和尾递归
查看>>
MongoDB--副本集基本信息
查看>>
sublime text 3安装
查看>>
UIViewController的生命周期
查看>>
[jzoj 5230] 队伍统计(状压DP)
查看>>
第一套面试题
查看>>
10个流行的JavaScript面试题
查看>>
演好你的角色
查看>>