# ZkingBase **Repository Path**: kevin226/ZkingBase ## Basic Information - **Project Name**: ZkingBase - **Description**: No description available - **Primary Language**: Android - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2017-03-03 - **Last Updated**: 2020-12-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
消息总线,依赖RxAndroid
使用十分简单 在activity或者fragment的onCreate中注册RxBus.get().register(this);, 在其他合适的生命周期方法中调用RxBus.get().unregister(this);
响应的activity或者fragment中监听
//thread规定执行在哪个线程,tags是消息过滤
@Subscribe(thread = EventThread.MAIN_THREAD, tags = {@Tag("loginok")})
public void loginFinish(Object obj)
{
finish();
}
发出消息的activity或者fragment中
//此处的"loginok"对应上面监听的tag,data可以是任何数据
RxBus.get().post("loginok", data);
图片选择裁剪,依赖Glide显示,依赖library Cropper,图片裁剪
在其他activity中使用:
startActivityForResult(new Intent(this, AlbumActivity.class), ActivityCode.SELECT_REQUEST);
重写onActivityResult
if(requestCode == ActivityCode.SELECT_REQUEST) //裁剪图片
{ //裁剪成功
if(resultCode == ActivityCode.SELECT_OK_RESULT)
{
//返回裁剪过后的图片路径,一般在外部存储的app缓存目录下面
String bmppath = data.getStringExtra("cropimg");
}
}
毛玻璃效果
使用方式:
StackBlurManager m = new StackBlurManager();
//参数bmp是要模糊的图片, 120是模糊半径,不能超过255
Bitmap bmp = m.blur(bmp, 120);
图片裁剪, 在图片选择模块使用
如果要使用retrofit,已经集成了,可以直接用,框架里面注册登录使用了retrofit
首先定义一个service,就是一个接口
public interface LoginService
{
@POST("user/dologin?")
Observable<BaseResp> loginByPhone(@Query("suTel") String phone, @Query("suPassword") String password);
}
初始化
OkHttpClient client = new OkHttpClient.Builder()
//请求地址拦截器
.addInterceptor(new LogInterceptor())
.connectTimeout(timeout, TimeUnit.SECONDS)
.readTimeout(timeout, TimeUnit.SECONDS)
.retryOnConnectionFailure(true)
.build();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Constant.WEB_BASE)
//自定义client
.client(client)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.build();
LoginService service = retrofit.create(LoginService.class);
observable = service.loginByPhone(phone, password);
observable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<BaseResp>())
{
@Override
public void onSubscribe(Disposable d)
{
//流式设计,此处主要用于拿到disposable
dis = d;
//onStart用于显示开始等待框
presenter.onStart();
}
@Override
public void onNext(BaseResp value)
{
//登录业务逻辑
MapInfoBean mi = value.mapInfo;
if(mi != null)
{
User u = mi.user;
if(u != null)
{
presenter.onSuccess(u, null);
dispose();
}
}else
{
presenter.onFailed(value.info, new Throwable("error"));
}
}
@Override
public void onError(Throwable e)
{
presenter.onFailed(getFailedString(e), e);
dispose();
}
@Override
public void onComplete()
{
presenter.onComplete();
dispose();
}
});
都是单例,使用都是getInstance拿到实例
okhttp3
使用方式:
1.
/***
* <b>发送一个post请求</b>, 回调要传入类型
*
* @param url 链接
* @param callback 回调函数
* @param reqBodyParam 请求体参数
*/
public void doPost(String url, Map<String, String> reqBodyParam,final ResultCallback<? extends Object> callback);
2.
/***
* <b>发送一个post请求</b>, 回调要传入类型
*
* @param url 请求链接
* @param callback 回调
* @param reqBodyParam 请求体参数
* @param reqHeader 请求头参数
*/
public void doPost(String url, Map<String, String> reqBodyParam, Map<String, String> reqHeader,
final ResultCallback<? extends Object> callback);
/***
* <b>发送一个get请求</b>, 回调要传入类型
*
* @param url 链接
* @param callback 回调函数
*/
public void doGet(String url, final ResultCallback<? extends Object> callback);
/***
* <b>下载, 回调方法要传入类型
*
* @param url 下载链接<br/>
* @param fileAbsolutePath 文件绝对路径<br/>
* @param callback 回调<br/>
*/
public void download(final String url, final String fileAbsolutePath, final ResultCallback<File> callback);
如果要监听下载进度,callback里重写onDownloadProgress
/***
* 文件上传
* @param url url
* @param fileAbsolutePath 文件绝对路径
* @param fileParamName 文件上传的参数名,相当于post的param
* @param reqHeader 请求头
* @param callback 回调函数
*/
public void upload(final String url, final String fileAbsolutePath,
final String fileParamName, boolean isPicture,
Map<String, String> reqHeader, final ResultCallback<? extends Object> callback);
如果要监听上传进度,重写onUploadProgress
示例:
OkHttpManager manager = OkHttpManager.getInstance();
manager.doPost(Constant.WEB_BASE + "/jpush/notifyOne", null,new OkHttpManager.ResultCallback<BaseResp>()
{
@Override
public void onError(String simpleMsg, Exception e)
{
Toast.makeText(PushActivity.this, simpleMsg, Toast.LENGTH_SHORT).show();
}
@Override
public void onSuccess(BaseResp response)
{
Toast.makeText(PushActivity.this, response.info, Toast.LENGTH_SHORT).show();
}
});