# 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 README

ZkingBase

RxBus

消息总线,依赖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);

PicBroswer

图片选择裁剪,依赖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");
    }
}

libblur

毛玻璃效果

使用方式:

StackBlurManager m = new StackBlurManager();
//参数bmp是要模糊的图片, 120是模糊半径,不能超过255
Bitmap bmp = m.blur(bmp, 120);

cropper

图片裁剪, 在图片选择模块使用


网络请求

如果要使用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();
                }
            });

manager包

都是单例,使用都是getInstance拿到实例

OKHttpManager

okhttp3

使用方式:

POST

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);

GET

/***
 * <b>发送一个get请求</b>, 回调要传入类型
 *
 * @param url      链接
 * @param callback 回调函数
 */
public void doGet(String url, final ResultCallback<? extends Object> callback);

download

/***
 * <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

upload

/***
 * 文件上传
 * @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();
    }
});