这是一个新文集,专门用于记录学习 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

如下图所示,是需要实现的页面效果:

阅读全文 »

1、什么是 View

在我们的日常工作中,你可能已经接触过了很多 View ,View 是 Android 中所有控件的基类,例如 Buttton、TextView、LinearLayout,这些类的继承关系如下图的所示(使用 Ctrl + H 快捷键组合可以查看选中类的继承关系):

阅读全文 »

项目中有一个页面实现的是用户为教师打分的功能,页面使用 RecyclerView 来实现的,由于这个功能一直没有正式上线使用,所以接手之后我也没有注意过这段代码是否存在问题。在前段时间上线使用之后,今天用户反应说这个页面存在 crash,遂检查修复。

发现只是一个简单的空指针错误(原来负责项目的人对空指针的判断已经坑我若干次了…),修复之后进行了简单的测试,发现还存在这另一个问题:在 EditText 中修改分值后,如果滚动 RecyclerView 再次回到该处的时候,EditText 中的内容被置为 0 了。坑里有坑!这就很尴尬了,这个项目的前任工程师真是挖了一个很大的坑啊。

阅读全文 »

转载请标明出处:http://www.jianshu.com/p/e1772bfa9a96

img

引言

作为一名 Androider 你应该也曾被 AS 那缓慢的编译速度所折磨 ,更为可怕的是即使你只是简单的修改了几行代码,修改了几个布局文件,当你再次运行的时候还是需要再次进行:「编译项目」—「安装 APK 到手机」。这两个步骤在我这台机器上,快则 4、5 分钟,慢则需要 10 多分钟,调试过程异常痛苦!

阅读全文 »

转载请标明原文地址:http://www.jianshu.com/p/b547d889c6c8

一个奇葩的需求,用户希望可以由客户来自定义 app 的应用名、图标,由于这些资源是不确定的,所以没有办法事先通过打包多个 flavor 来满足需求。需要在用户需要的时候,动态的完成打包工作。

apktool

思考

在接到这个需求的时候,我想到了两个可能实现的方案:

  1. 使用 gradle,将项目源文件放在服务器上,当需要打包时,替换对应的资源文件,然后调用 gradle 指令,完成打包任务(思路来自 Jenkins,其实质好像就是通过调用gradle来进行打包)。

  2. 服务器上放置 apk 文件,在需要的时候,解包 apk,替换资源文件,然后重新打包签名。(思路来自鸿洋反编译的博文)。

其中方法一需要重新编译打包,无疑是一个极其费时的方法,故考虑采用方法二。

阅读全文 »

转载请标明原文地址:http://www.jianshu.com/p/dc163215bc7e


本来打算继续写 MVP 模式的,但是看了网上的几篇 Dagger 介绍的文章后,还是决定先写写 Dagger,网上有些文章写的不是过于简单就是太过复杂,或是不够详实,让刚接触 Dagger 的人容易看的云里雾里。正好也是刚学习 Dagger 没多久,记录下来对自己也是一个查缺补漏。文中如有错误,请各位大佬予以斧正!

本文示例代码:https://github.com/junerver/DaggerDemo


阅读全文 »

Retrofit

现在Android开发中,主流的网络请求库有Retrofit、OkHttp、Volley等,最热门的就是Retrofit了。

Retrofit官方的介绍是:A type-safe REST client for Android and Java(类型安全的REST客户端for 安卓&Java)

RESTful可以参考这篇文章,本文只做Retrofit的介绍以及配合RxJava使用上的简单介绍,本文中的Retrofit指retrofit:2.1.0版本;

阅读全文 »

转载请标明原文地址:http://www.jianshu.com/p/843055bf6edd

重要更新

  1. 现在新建变体还需要在 defaultConfig 下加入 flavorDimensions "versionCode"
  2. 我写了一个脚本可以快速的创建变体的sourceSet,项目地址:junerver/flavor_cli

使用方法:将该脚本复制到项目根目录下(与app目录同级),然后运行指令:python3 flavor_variant.py,后续按照提示输入即可,因为是供自己开发快速使用的,所有必然有bug与一些严格匹配的要求,欢迎提PR!

阅读全文 »

场景:存在着两个不同的实体类(ParentEntity、ChildEntity),这两个实体类中都有头像这一个属性,对应着服务器的图片保存位置。需要一个方法,可以获取这一属性,然后将图片下载保存到本地指定位置,同时将路径保存到该实体类,然后更新数据库。

阅读全文 »
0%