Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

一套有深度的框架

NotificationsYou must be signed in to change notification settings

ccx1/XAndroidFrame

Repository files navigation

目前完成

  1. data 数据处理层

  2. http 网络请求层

  3. common 常用工具包,必要包

  4. mvp mvp设计模式框架包,如果需要mvp设计模式,需要集成,依托于common。

  5. install 包, 处理apk版本更新,校验。依托于common,http包。

下一计划

  1. 数据加密层 encode

  2. 数据库处理层 dataServer

目标

分离式android架构

common 必要包-组织总框架结构包

data 数据架构包,非必要

http 网络请求包,非必要

mvp mvp设计模式框架包,如果需要mvp设计模式,需要集成,依托于common。

encode 数据加密层,非必要

dataServer 数据库处理层,非必要,如果需要数据库可以添加


rx框架系列-自用系列

rxbus使用

 Disposable subscribe = RxBus.get().subscribe(Integer.class).map(new Function<Object, Object>() {     @Override     public Object apply(Object o) {         return o;     } }).subscribe(new Consumer<Object>() {     @Override     public void accept(Object s) throws Exception {         System.out.println("我在2号界面收到了 " + s);     } });// 需要注册bus RxBusSubscriptions.bind(this, subscribe);

销毁的时候需要注销bus

@Overridepublic void onDestroyView() {    super.onDestroyView();    BusSubscriptions.unbind(this);}

发送数据

 RxBus.get().post(1234132413); RxBus.get().post("asdfsdfad"); RxBus.get().post(new Event<String>("test1", "afsdg"));
如果使用mvp架构包,则可以省略注册步骤以及销毁步骤

直接进行创建即可

 mPresenter.createBusInstance(Integer.class, new Consumer<Integer>() {     @Override     public void accept(Integer integer) throws Exception {         System.out.println("我在2号界面收到了 " + integer);     } });

rxfragmention

集成写好的实现类suppoetactivityimp和supportfragmentimp

加载根部fragment

loadRootFragment(R.id.fl, new Test1Fragment());

跳转某个fragment

start(new Test2Fragment());

关闭当前

pop();

关闭到某个fragment

popTo();参数1:某个fragment的class参数2:是否包含当前public void popTo(Class<?> clazz, boolean includeTargetFragment)
如果使用mvp架构包,则可以直接集成mvp下的
BaseActivityBaseFragmentBasePresenterImp

rxpermission

 mPermissionsHelper = new PermissionsHelper(this); mPermissionsHelper         .request(Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE)         .subscribe(new Observer<Boolean>() {             @Override             public void onSubscribe(Disposable d) {             }             @Override             public void onNext(Boolean aBoolean) {                 // 此方法返回true,为全部获取,否则没有获取到全部权限                 System.out.println(aBoolean);             }             @Override             public void onError(Throwable e) {             }             @Override             public void onComplete() {                 System.out.println("完成");             }         });

需要在onRequestPermissionsResult中回传数据

@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {    super.onRequestPermissionsResult(requestCode, permissions, grantResults);    mPermissionsHelper.onRequestPermissionsResult(requestCode, permissions, grantResults);}

此方法在activity中也是如此使用

如果使用mvp架构包,直接传入数组即可
requestPermission(new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE},     new AbstractAction1<Boolean>() {         @Override         public void onNext(Boolean aBoolean) {         }         @Override         public void onError(Exception e) {         }     });}

封装rxretrofit

通过java的泛型,完美解决请求的model问题

public static void get(ResponseCallback<ResultModel<String>> callback) {    Map<String, String> stringStringHashMap = new HashMap<>();    stringStringHashMap.put("abc", "123");    Observable<ResultModel<String>> observable = RetrofitManager.getInstance().getRetrofit().create(ApiService.class).get(stringStringHashMap);    HttpServiceManager.getInstance().enqueue(observable, callback);}

封装之后

HttpHelper.get(new ResponseCallback<ResultModel<String>>() {    @Override    public void onResponse(ResultModel<String> response) {        System.out.println(response);    }    @Override    public void onFailure(String msg) {        System.out.println(msg);    }});

支持重新设置okhttpclient

 RetrofitManager.getInstance().setBaseUrl("http://192.168.2.154:3001")                .setOkHttpClient(OkHttpManager.getInstance().build());

或者直接build也可以用默认的client

 RetrofitManager.getInstance().setBaseUrl("http://192.168.2.154:3001").build();

GlideManager

/** * 展示图片--网络加载 * 空白或者错误占位图片:picasso提供了两种占位图片,未加载完成或者加载发生错误的时需要一张图片作为提示。 * 如果加载发生错误会重复三次请求,三次都失败才会显示erro Place holder */public static void showImage(Context context, ImageView imageView, String url)/** * 展示图片--网络加载 * 空白或者错误占位图片:picasso提供了两种占位图片,未加载完成或者加载发生错误的时需要一张图片作为提示。 * 如果加载发生错误会重复三次请求,三次都失败才会显示erro Place holder */public static void showImage(Context context, ImageView imageView, String url, int loadingDrawable)/** * 展示图片--资源文件id R.drawable.landing_screen */public static void showImage(Context context, ImageView imageView, int drawable)/** * 展示图片--文件 */public static void showImage(Context context, ImageView imageView, File file)/** * 展示图片: 转换图片以适应布局大小并减少内存占用 */public static void showGifImage(Context context, ImageView imageView, String url, int width, int height)/** * 展示图片: 自定义转换图片 */public static void showImage(Context context, ImageView imageView, String url, RequestOptions options)

CameraHelper

// 获取系统照相机,通过onActivityResult返回public void startSystemCamera(Activity activity, File file)// 拍摄完成之后回传将照片放入相册public void onActivityResult(Activity activity, File file, int requestCode, Intent data)// 获取照片数据public List<Photo> getPhotosData(Activity activity)// 跳转系统的图片选择,通过onActivityResult返回public void startSystemPhotoSelect(Activity activity)// 设置结果回调public void setOnResultCallback(OnResultCallback onResultCallback)

FileHelper

// 文件拷贝流public boolean copy(InputStream is, File file)

install包

使用方式

    UpdateApkDialog updateApkDialog = new UpdateApkDialog(this);    updateApkDialog.popDialog();    updateApkDialog.setDownloadApkPathUrl("res/test.apk");    updateApkDialog.setDownloadApkSavePath(Environment.getExternalStorageDirectory() + File.separator + "test.apk");

参考

fragmention

rxpermission

Releases

No releases published

Packages

No packages published

Languages


[8]ページ先頭

©2009-2025 Movatter.jp