在项目中集成并使用Kotlin 与空安全- 初识
这是一个新文集,专门用于记录学习 Kotlin 时遇到的一些问题或者心得体会。由于个人水平有限,文章难免会有错误之处,望大佬不吝指教。
Kotlin 由来已久,在17年被谷歌纳为了 Android 开发的一级语言,相必大家也多少有些许了解。在开发工作中,还没能正式的将项目来使用 Kotlin 开发,但是了解 Kotlin 显然已是迫在眉睫了。
这是一个新文集,专门用于记录学习 Kotlin 时遇到的一些问题或者心得体会。由于个人水平有限,文章难免会有错误之处,望大佬不吝指教。
Kotlin 由来已久,在17年被谷歌纳为了 Android 开发的一级语言,相必大家也多少有些许了解。在开发工作中,还没能正式的将项目来使用 Kotlin 开发,但是了解 Kotlin 显然已是迫在眉睫了。
转载请注明作者及出处:https://www.jianshu.com/p/b41f64389c21
[25]——Android 人脸识别了解一下 (上)
在上文中我大致的介绍了官方 Demo 中人脸注册的流程,本文我们接着来看看,在完成了人脸注册之后我们该如何识别出用户的人脸特征,从而通过人脸识别获取用户信息。
人脸识别的全部流程集成在官方 Demo 的 DetecterActivity 文件中。
转载请注明作者及出处:https://www.jianshu.com/p/ca3a12bc4911
人脸识别这件事想来早已经不新鲜,在 Android 中的应用也并不广泛,所以网上相关资料乏善可陈。但是在面对特殊的应用场景时,人脸识别的功能还是有一定的用处的,比如在考勤领域。
网上能搜到的很多示例比较多的是基于科大讯飞或者face++实现的,其中有一个示例做的非常漂亮,推荐大家看一看,**SwFace**。该项目基于讯飞SDK实现的人脸检测,使用face++的webapi实现的人脸注册以及人脸识别。
转载请标明出处:https://blog.csdn.net/u011133887/article/details/80372616
吐槽自己:好长的标题啊
这个功能想必大家都很熟悉,但是网上搜索到的几篇文章要么是大段的代码看的头晕,要么是不求甚解的复制粘贴,今天我们从布局到实现原理一步步分析,让你也能完成一个仿美团外卖的地址选择页面。
本文项目 GitHub 地址:https://github.com/junerver/BaiduMapDemo
注意:示例项目使用 Kotlin 编写,不了解 Kotlin 的小伙伴可以参考博文中的 Java 代码;
永远不要期望用户按照你预设的步骤操作 APP
一个新项目刚刚开始推广工作,市场人员向我抱怨用户使用时总会出现各种各样的问题,大部分问题都是因为用户操作不当导致的,但是在用户眼中的结论就是“你们的 APP 不好用”。
举一个例子,有的用户在使用时禁用了 APP 访问移动网络,或者有的用户干脆都没有打开移动数据开关或者 WIFI 开关。但是作为开发人员,我们应该避免用户思考,当用户使用出现问题时,APP 应该能够引导用户前往设置,故有此文。
我们希望当用户网络连接不可用时,及时提醒用户当前的网络状态。当连接恢复时,将提示用的视图隐藏,并且我们希望这个提示视图可以工作在所有需要网络的页面中。
思路如下:使用 BaseActivity ,所有页面继承该文件,在该文件中实现根据网络状态显示提示、隐藏提示。
好了,废话少说,show u the code。
Picasso 想必大家都非常熟悉了,使用 Picasso 来载入一张网络图片也是非常简单的一件事情:
1 | Picasso.with(mContext).load(mImageUrl).into(mIvImage); |
当网络图片较大时,加载图片需要较长时间,这时候显示一个空白的 ImageView 对用户而言并不友好,我们需要用一个加载动画来提示用户正在加载图片,这时应该怎么做呢?
想必关于使用自定义 TabLayout 来作为ViewPager 的指示器,大家都已经很熟悉了吧,如果还不了解自定义 TabLayout,可以看看 Showdy 写的 TabLayout之自定义样式 。
本文呢,不再过多的复述如何自定义 TabLayout 的样式相关问题,而是简单说说如何自定义 TabLayout 的分隔符 Divider。
如下图所示,是需要实现的页面效果:
git branch 列出当前的全部分支
git checkout master 检出仓库并且切换到该分支
git merge develop 将develop分支合并到当前分支
项目中有一个页面实现的是用户为教师打分的功能,页面使用 RecyclerView 来实现的,由于这个功能一直没有正式上线使用,所以接手之后我也没有注意过这段代码是否存在问题。在前段时间上线使用之后,今天用户反应说这个页面存在 crash,遂检查修复。
发现只是一个简单的空指针错误(原来负责项目的人对空指针的判断已经坑我若干次了…),修复之后进行了简单的测试,发现还存在这另一个问题:在 EditText 中修改分值后,如果滚动 RecyclerView 再次回到该处的时候,EditText 中的内容被置为 0 了。坑里有坑!这就很尴尬了,这个项目的前任工程师真是挖了一个很大的坑啊。
转载请标明原文地址:http://www.jianshu.com/p/b547d889c6c8
一个奇葩的需求,用户希望可以由客户来自定义 app 的应用名、图标,由于这些资源是不确定的,所以没有办法事先通过打包多个 flavor 来满足需求。需要在用户需要的时候,动态的完成打包工作。
在接到这个需求的时候,我想到了两个可能实现的方案:
使用 gradle,将项目源文件放在服务器上,当需要打包时,替换对应的资源文件,然后调用 gradle 指令,完成打包任务(思路来自 Jenkins,其实质好像就是通过调用gradle来进行打包)。
服务器上放置 apk 文件,在需要的时候,解包 apk,替换资源文件,然后重新打包签名。(思路来自鸿洋反编译的博文)。
其中方法一需要重新编译打包,无疑是一个极其费时的方法,故考虑采用方法二。
转载请标明原文地址:http://www.jianshu.com/p/dc163215bc7e
本来打算继续写 MVP 模式的,但是看了网上的几篇 Dagger 介绍的文章后,还是决定先写写 Dagger,网上有些文章写的不是过于简单就是太过复杂,或是不够详实,让刚接触 Dagger 的人容易看的云里雾里。正好也是刚学习 Dagger 没多久,记录下来对自己也是一个查缺补漏。文中如有错误,请各位大佬予以斧正!
本文示例代码:https://github.com/junerver/DaggerDemo
其实感觉应该叫做 MVP 模式之我见~,作为一个菜鸟其实我对 MVP 模式还不是特别理解,所以文中必然会有这样那样的错误的存在,希望各位大佬不吝赐教!
项目中有一个新的需求,要求可以连接一个USB体温枪,APP可以从体温枪中读取到体温数据,一番搜寻之后发现一个封装很棒的USB通信库。
github地址:usb-serial-for-android
转载请标明原文地址:http://www.jianshu.com/p/843055bf6edd
flavorDimensions "versionCode"
使用方法:将该脚本复制到项目根目录下(与app目录同级),然后运行指令:python3 flavor_variant.py
,后续按照提示输入即可,因为是供自己开发快速使用的,所有必然有bug与一些严格匹配的要求,欢迎提PR!