当前位置: 首页 > 科技观察

教你开发一个实用完整的AndroidApp,附源码

时间:2023-03-20 13:48:49 科技观察

最近利用业余时间写了一个生活工具应用。三方库,你可以把它看成是一个动手实践的demo应用!这里总结一下我在这个应用中使用的库,这里也说明了一些大家感兴趣的实现效果。大家在开发中作为一种参考。shortcatalog的目录结构确实有点混乱。这里补充一下整体架构:应用相关(小秋的盒子),第三方库应用的整体框架(Rxjava+Retrofit+okhttp),一些常见和常用的框架(Glide、leakcanary、Logger等)Logger日志打印GsonFormat&Gsonjson数据分析butterknife依赖注入框架leakcanary内存泄漏检测工具Glide图片请求库circleimageview循环图片库greenDAO数据库eventbus事件发布/订阅框架常用第三方平台使用小米推送ShareSDKSMSSDK友盟统计一些开源函数库BaseRecyclerViewAdapterHelperRecycleView扩展库ReactiveNetwork移动网络连接状态动态监控colorpicker调色板选择库BGAQRCode-Android二维码扫描项目MPAndroidChart图表库material-calendarview材质设计日历控件flexbox-layout框布局控件KenBurnsViewParallax图片控件materialsearchview素材设计搜索框MagicIndicator指标库Android应用自动更新库(android-auto-update)Slidinglayout果冻弹跳效果SlidingTutorial-Android引导页Android权限动态应用图片手势控制端Github地址应用相关这里是这个你可以下载应用下载地址及演示视频:小秋魔盒下载链接:mobile.baidu.com/item?type=s...小秋魔盒演示视频:v.youku.com/v_show/id_X...第三方库输入密钥下面分几点,主要介绍库开发中用到的第三方框架和库(截图较多,手机流量党慎入)。1.应用的整体框架(Rxjava+Retrofit+okhttp网络请求框架)之前项目中使用的网络请求框架基本都是封装好的okhttp框架,但是近一两年Rxjava+Retrofit的势头很火强。作为开发人员,你总是要学习和接受这些新技术。在发展的世界里,技术永远是至高无上的。一项新技术的流行总是有其优势的,要么对旧框架的性能提升很多,要么更易于使用等等。对于Rxjava+Retrofit+okhttp的组合,个人建议不要去网上找那些所谓的打包库。您仍然原生使用Rxjava和Retrofit。虽然代码有点繁琐,但是你可以用的更快。熟悉它们各自的用途。(同时说一下,目前还没有找到可以完美打包它们的库。)三个库的官方地址请自行查找。这里有一个介绍用法的Demo地址(个人也参考这个使用)Github地址:github.com/rengwuxian/...如果对这三个库的基本用法不熟悉,可以参考我的一些教程收集如下:Android开发者Rxjava教程RxJava详解:gank.io/post/560e15...Okhttp教程:地址:ocnyang.com/tags/OkHttp...Retrofit2教程:地址:ocnyang.com/tags/Retrof。..2。一些常见和常用的框架(Glide、leakcanary、Logger等)Logger日志打印Github地址:github.com/orhanobut/l...GsonFormat&Gsonjson数据解析GsonFormatGithub地址:github.com/zzz40500/Gs。..GsonGithub地址:github.com/google/gsonbutterknife依赖注入框架Github地址:github.com/JakeWharton...leakcanary内存泄漏检测工具Github地址:github.com/square/leak...Glide图片请求库Github地址:github.com/bumptech/gl...教程地址:ocnyang.com/tags/Glide/circleimageview圆图库Github地址:github.com/hdodenhof/C…greenDAO数据库Github地址:github.com/greenrobot/…eventbus事件发布/订阅框架Github地址:github.com/greenrobot/...3.常用第三方平台的使用(推送+社交分享登录+短信体验证书)先说一下。事实上,国内市场上各种功能相同的平台基本都是同质化的。没有必要纠结于选择哪一个。效率上的差异不会太大。这几年小米手机很火,我也试试看。再说说与其他平台相比的不足之处。小米的推送目前不支持富文本,但是效率很好。)ShareSDKMobSocial平台分享和验证手机短信在SMSSDKMob平台上(感觉Mob平台口碑不错,在一方面这个名字好听,另一方面永久免费)友盟统计(这个小应用大部分都会用到)4.一些功能的开源库BaseRecyclerViewAdapterHelperRecycleView扩展库无论在哪个项目,该列表可能使用得比较频繁。这里,就说说自己选择列表库吧。如果你还在专注于使用ListView/GridView,那你真的需要花点时间研究一下RecyclerView的用法了。RecyclerView的使用想必大家已经在日常开发中经常使用了,现在到处都有RecyclerView的封装库,在Github上的star也多的上千。可以看看这位朋友总结的RecyclerView类库合集,看得眼花缭乱:《那些酷炫的RecyclerView开源库整理》简书地址www.jianshu.com/p/154891851...而我在比较了多个类库后最终选择了BaseRecyclerViewAdapterHelper这个图书馆,我简单说明一下原因:我自己的选择标准是:**1。**列表必须具备所有功能(添加Header&Footer,下拉刷新页面,上拉加载更多,这些基本功能必须具备);**2。**不能打扰。所谓侵入性,就是不能对原生态利用产生本质的改变。比如有些框架要求你在使用这些自定义控件名称时必须使用SuperRecycleView,更有什者,我在查看这些框架的源码时,发现它其实继承了里面封装的LinearLayout;有些要求你在使用原控件的时候在原控件外面嵌套一层父布局,这也是不能容忍的。**3。**这里简单介绍一下BaseRecyclerViewAdapterHelper。这个框架非常具有侵入性。您无需对布局进行任何更改。当需要下拉刷新时,可以像以前一样在外面嵌一层SwipeRefreshLayout。同时可以单独设置加载动画、加载失败等布局。添加页眉/页脚,您可以通过.add(header)创建新布局来轻松添加它。从框架BaseRecyclerViewAdapterHelper的命名上大概可以看出来,它的侵入体现在Adapter上,但是Adapter的职责是数据适配和填充,它的侵入在我看来是可以接受的。说到这里就这么多了,有兴趣的可以去Github了解一下具体的用法(文档还算友好,建议参考Demo):Github地址:github.com/CymChad/Bas...最近写了一篇RecyclerView比较详细的排序文章,可以看看:RecyclerView排序:点击&长按事件,分割线,拖拽排序,滑动删除手机流量下不需要展示图片。这时候就需要随时监控手机网络的连接和断开,WiFi和流量的切换,以便随时做出相应的改变。ReactiveNetwork是一个可以帮助你做到这一点的库。我也是无意中发现了这个图书馆。具体用法可以自己查看:Github地址:github.com/pwittchen/R...colorpicker调色板选择库类似的库有很多,但我还是喜欢这个。Github地址:github.com/QuadFlask/c...BGAQRCode-Android二维码扫描项目的作者也是别人修改的库。如果你的项目中需要扫描二维码,而且要求不是太高,可以考虑使用这个库。Github地址:github.com/bingoogolap...MPAndroidChart图表库在Android开发中用过图表的人应该都知道这个库。这个库是一个非常强大的开源库,可以满足你的大部分图表需求。Github地址:github.com/PhilJay/MPA...material-calendarviewmaterialdesign日历控件是一个非常漂亮的日历控件,扩展性也很好。Github地址:github.com/prolificint...flexbox-layout盒子布局控件Github地址:github.com/google/flex...对应的教程很多,请自行google。KenBurnsView视差图像控件有时在项目中应用,效果还是很不错的。Github地址:github.com/flavioarfar…materialsearchview材质设计搜索框Github地址:github.com/MiguelCatal…MagicIndicator指标库发现这个库或多或少有bug,记得鸿洋也开源了一个类似的库也是挺好的,可以自行搜索。MagicIndicator地址:github.com/hackware199...Android应用程序自动更新库(android-auto-update)是一个用于应用程序本地自动更新的库。Dialog&Notification两种形式都支持,还是很不错的。项目地址:github.com/feicien/and...Slidinglayout果冻弹跳效果。这种效果在QQ上很常见。一般在WebView上使用。当然,你也可以用在其他地方。发挥你的想象力。Github地址:github.com/HomHomLin/S…SlidingTutorial-Android引导页面直接按照demo使用,可以定制的东西很少。当然,引导页面本身没有什么可以定制的。这取决于您是否喜欢引导页的设计。这里给了两个库,我在应用中用的是第一个,欣赏一下。SlidingTutorial-Android项目地址:github.com/Cleveroad/s...AppIntroGithub地址:github.com/apl-devs/Ap...Android权限的动态申请从Android6.0开始,一些高级权限需要动态申请.在之前版本安装应用时是一次性申请所有权限,但6.0之后安装后默认只允许部分低权限,需要手动申请用户激活才能获得高级权限。如果不申请,申请权限界面会闪退崩溃。相信一线开发人员早就知道这一点。这里有几个可以帮助你动态申请权限的库:PermissionsDispatcher地址(目前在应用中使用这个):github.com/hotchemi/Pe...RxPermissions地址:github.com/tbruyelle/R...easypermissions地址(好像大家都比较喜欢这个,不知道为什么):github.com/googlesampl...Android图像手势控制Github地址:github.com/boycy815/Pi...完结,这么多对于图书馆酒吧。如果您在玩《小秋的魔盒》时遇到什么问题,可以在下方留言。如果您对应用中某个功能的实现效果有任何疑问,也可以在下方留言。如果我觉得有必要,我会写一些相应的教程给大家。至于《小秋的魔盒》的源代码,目前还不能公开。一方面,刚刚完成,代码格式等写得比较随意,可能会出现很多无法避免的bug;另一方面,该应用程序中的某些功能尚未发布。完美,但仍然是一个不完整的应用程序。合适的时候我会把源代码放在Github上。(源码已上传)目前Github上已经搭建了相应的项目。同时对使用到的第三方库以及相关功能的实现进行了较为详细的总结。可以看看:小秋魔盒Github地址:github.com/OCNYang/QBo...