GithubHelp home page GithubHelp logo

mirkowu / baselibrary Goto Github PK

View Code? Open in Web Editor NEW
241.0 17.0 63.0 10.45 MB

[停止维护,已迁移到【MVM】]:fire:Android开发 常用基础公共库(mvp/mvvm/retrofit/rxjava/socket/ble/多语言) 直接下载或依赖即可使用

Java 99.10% FreeMarker 0.90%
baselibrary screenadapter mvp ble socket demo commonlibrary baselib commonlib

baselibrary's Introduction

本库已暂停维护,新版组件库请使用MVM,功能更全,组件解耦

github:https://github.com/MirkoWu/MVM

BaseLibrary

本库旨在开发项目时能快速搭建框架,提供较为常用的开发工具。建议下载作为依赖库, 便于修改。部分功能会仅在demo中有体现,请详细看完demo。 github:https://github.com/MirkoWu/BaseLibrary

下面介绍本库的主要内容

1. MVP/MVVM模式

Model :使用 Retrofit + OkHttp + RxJava 框架

View :Activity/Fragment

Presenter/ViewModel :执行代理

使用方法:

1.继承BaseActivity/BaseFragment/BaseDialogFragment
2.创建Presenter(可选)

Base 大致功能如下:

1.切换语言
2.切换日夜模式
3.检测横竖屏
4.显示/隐藏Loading弹框
5.ButterKnife 绑定数据
6.控制RxJava生命周期,防止内存泄漏
7.MVP/MVVM模式

2. Refresh + RecyclerView + Adapter

刷新推荐使用:SmartRefreshLayout
Adapter推荐使用: BaseRecyclerViewAdapterHelper, 可直接继承本项目的BaseRVAdapter,更方便 。用到选择逻辑时可继承 SelectedAdapter 。

3. 各基础常用的Dialog

BottomListDialog 类似BottomSheetDialog,从底部弹窗的选择框
LoadingDialog 加载框
PromptDialog/PromptDialogFragment 提示框

4. 各基础常用的自定义View

NoScrollViewPager 可不能滑动的ViewPager
SwipeItemLayout 侧滑多选项,类似QQ
ClickImageView 点击可变色阴影的ImageView
TimerTextView 获取验证码 倒计时View 语言需自己处理
SquareFrameLayout/SquareLinearLayout 可用ConstraintLayout代替

5. 网络加载 Retrofit + OkHttp + RxJava + Lifecycle

网络加载使用 Retrofit + OkHttp + RxJava 配套方案,可以控制加载框,
RxJava生命周期绑定,拦截器加密,数据泛型解析。

6. Socket通信工具

RxSocketManager 可创建TCP/UDP连接

7. 其他工具(详情见utils包下文件)

 1.AppUtil  App信息、软键盘等。
 2.SPUtil BaseSPManager SharedPreferences工具类和管理类
 3.BitmapUtil
 4.ContextUtil 获取文字,颜色
 5.DisplayUtil ScreenUtil 屏幕像素相关
 6.EmptyUtil 空字符串 /数组判断工具
 7.ToastUtil 吐司工具
 8.RxPermissionsUtil 权限申请
 9.RegularUtil 正则工具
 10.AESUtil、RSAUtil、MD5Util 常用加解密工具
 等...

8. 蓝牙开发

提供二种管理方式
1.跨界面或者全局管理蓝牙业务的BLE连接:
  BLEManager
  BLEManagerActivity 搜索并连接蓝牙Demo
  (记得在合适的时机调用close方法来关闭蓝牙服务)

2.和Activity绑定业务的BLE连接:
  BLEService 蓝牙服务
  BLEClient 蓝牙工具
  BLESearchActivity 搜索并连接蓝牙Demo

9. 屏幕适配方案(已在base库中集成)

原理同今日头条适配法 使用库AndroidAutoSize
使用方法:

    <manifest>
       <application>
           <meta-data
               android:name="design_width_in_dp"
               android:value="360"/>
           <meta-data
               android:name="design_height_in_dp"
               android:value="640"/>
        </application>
    </manifest>

优点:无入侵,随用随关。只要布局按照设计稿的大小来写(dp模式,用的单位是dp,sp )即可。

Demo下载

关于模板

项目 localTemplates 目录下的二个模板请Copy到 AndroidStudio安装目录下的模板路径:
某盘:\AndroidStudio安装路径\plugins\android\lib\templates\activities 。
例:我的studio安装路径在C:\AndroidStudio, 找到该目录下的
\plugins\android\lib\templates\activities ,copy进去 重启sudio 即可生效

Log更新日志

*2019-3-21
    更新 多语言 跟随系统 切换时的问题。
*2019-3-15
    修复 SplashTheme 冷启动秒开效果 。
*2019-3-11
    修复WebView在界面销毁后,因为延迟回调导致的bug。
*2019-3-8
    优化RxSocketManager
*2019-3-5
    增加蓝牙BLE通信
*2019-2-22
    删除了ContextUtil工具类,该类导致在日夜模式获取颜色时,不生效
    增加了android P http明文传输被限制的配置文件
    优化Socket工具类
    修复了导致PromptDialog 异常的相关API
    增加了包名修改注意事项文档
*2019-1-11
    增加了闪屏页,引导页
    增加了WebView通用demo页面
    修改了demo的包名,避免重命名项目时将baselibrary也修改了
    优化了Socket工具,是的udp能自动判断是单播还是组播
    修复了MD5Util工具类中 ToMD5NOKey() 方法导致的bug。
*2018-12-9
    根据实际情况简化MVP模式,剔除繁琐的Contact。
    更新适配方案 AndroidAutoSize
    优化 NetworkTransformer
    更新工具库
*2018-8-30
    调整框架结构 抽离BaseDelegate 增加 DataBinding 用法即示例
    增加AES和RSA加解密算法工具
*2018-8-17
    更新SPUtil  get()方法 defValue 默认值不能为空
    更新RefreshFragment/RefreshActivity 刷新请求失败时的UI状态自动化
*2018-8-16
    更新BaseSPManager 增加 判断是否新版本方法
*2018-8-4
    重要更新: 添加屏幕适配方案, 原理同今日头条适配法
    修改了ScreenUtil、 BaseActivity、BaseApplication文件
    使用详情请看 文档第9条
*2018-8-1
    修复NetworkUtil 中判断是否为Wifi连接Bug
*2018-7-30
    添加 TimerTextView :验证码倒计时View
*2018-7-26
    添加CompressUtil工具类:鲁班压缩方案
    ScreenUtil 添加方法 getScreenRealWidth()
*2018-7-23
    添加说明文档
    添加模板文件

baselibrary's People

Contributors

mirkowu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

baselibrary's Issues

在查看webView之后,点击返回会报错

webview能正常显示网页,但是按返回键退出APP会直接停止运行。
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ProgressBar.setVisibility(int)' on a null object reference
at com.mirkowu.baselibrarysample.ui.webView.WebViewActivity$1.onProgressChanged(WebViewActivity.java:156)

报DexArchiveBuilderException错误

您好,我新建项目导入您的baseLib,疯狂的报DexArchiveBuilderException错误,
试了好多解决方法都不行,用的是gradle:3.0.1 运行平台是:SDK:26

BaseRVAdapter使用问题

祝国庆快乐!
请问在继承BaseRVAdapter后我的现有数据应该如何装载到Adapter?如下:
`

public class RecyclerViewAdapter extends BaseRVAdapter<List < HomeEntityBean > > {

public RecyclerViewAdapter(int layoutResId,List<HomeEntityBean> homeEntityBeans) {
    super(layoutResId);
}

@Override
public void onBindVH(BaseRVHolder holder, List<HomeEntityBean> data, int position) {
    holder.setText(R.id.item_title,data.get(position).title);
    holder.setImageDrawable(R.id.item_icon,data.get(position).icon);
}

}

`
我在构造函数传入了LayoutId,但是不知道怎么把现有的List < HomeEntityBean > 传入BaseRVAdapter。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.