Android Weekly Notes Issue #287
Android Weekly Issue #287
December 10th, 2017
Android Weekly Issue #287
圣诞节快要来了,小编也偷懒了,本期内容包括如何通过AS添加网络字体库,以及如何使用Dagger.Android等实现Clean Architecture,还包含一篇Android安全系列的文章,介绍如何实现长数据的加密.
关于Kotlin的技巧以及系统数据库的替代品,也有各有两篇系列文章,值得一看.
ARTICLES & TUTORIALS
The Android Developer’s Guide to Better Typography
文章介绍了如何利用Androis Studio为你的View添加新的Font.
在AS3.0中,可以通过从Layout的的Design Tab中的Component Tree里选择你想要添加font的View,然后在右侧的Attribute里面找到font family,然后就可以添加自己想要的font,还可以是通过Google Font Provider来的网络字体.
其会在你的res/font下生成字体配置文件,这里可以通过app:fontProviderFetchStrategy设置加载策略,如block,可以避免没下载完成字体被切.
在生成的配置文件中,还有一个比较重要的就是,res/values下面的preloaded_fonts,定义了会加载的字体名字.
Clean Architecture - Kotlin, Dagger 2, RxJava, MVVM and Unit Testing
文章介绍了Clean Architecture的结构以及如何对ViewModel进行测试(mock Repository).
值得一提的是,这里大概介绍了Dagger2.Android,帮助我们轻松的进行DI,通过ContributesAndroidInjector将zhiding的Activity生成AndroidInjector,来帮助我们更轻松的对Activity以及Fragment进行注入.
关于Dagger2.Android详情也参考之前的文章.
Secure data in Android — Encrypting Large Data
文章继续介绍如何对大量数据的加密,在Android里非对称加密RSA对加密长度有限制,并且只能在Android18以上可以设置,最大4096bit,显然不符合我们的要求.
对于Android M以上,系统的KeyStore可以支持生成对称加密秘钥了,所以我们可以直接通过生成ASE秘钥对大量数据进行对称加密.
但是对于M以下的系统,我们只能通过Java的Key Provider生成一个秘钥文件,存放在某处,这样不是非常安全.解决方案就是,通过RSA对生成的ASE秘钥进行加密后在放在储存器中,解密时先通过RSA对秘钥进行解密,然后再进而解密我们的数据. (因为KeyStore是支持生成RSA非对称秘钥,并随着App的拆卸而销毁的.)
Kotlin Playground
作者通过一个Demo记录自己的Kotlin学习之旅,并附上了一些自己的学习资料,包含视频资料哦.
6 magic sugars that can make your Kotlin codebase happier - Part 1
一个系列文章,介绍Kotlin的牛逼之处.
本篇介绍了通过seal class来将不同的类型关联起来实现更强功能的Enum,然后配合when来方便swich逻辑.
还可以将几种seal class合成Pair(left to right)或者Triple(left to mid to right)来穿给when做条件筛选.
6 magic sugars that can make your Kotlin codebase happier - Part 2
系列文章的第二篇,涉及到如何用with来简化你的代码,并且还介绍了如何封装一个具备类型检测的withCorrectType,这里涉及到一个kotlin的知识点,我们在很早之前的Weekly有提到:
就是通过inline与reified让泛型参数可以在运行时被is检测,否则泛型类型会被摸去.
Lessons from my first multiplatform Kotlin project
Kotlin 1.2推出了多平台功能的支持,其提出了将一个程序分为common module, platform module与regular module三层,并且还提供了expect 与 actual的新特性,可以在common层定义expect类与方法,并通过在platform层实现.
其相较于接口好的一点是,对于expect类用起来跟一个完整的类一样,可以有构造,可以实例化,可以调用所定义的expect方法.
文章介绍了自己的思路,并指出了MVP在这种跨平台代码中的妙用,让逻辑代码可以共用.
Tuning your SQLite with SQLDelight & SQLBrite: Part 1
文章介绍了SQLBrite相较于系统ContentProvider好用之处,主要是其实对系统API的Rx封装,使得整个数据库的操作做到React.
Tuning Your SQLite With SQLDelight & SQLBrite: Part 2
文章介绍了SQLDelight,它是一个通过gradle plugin将.sq文件生成Java代码的db.
如:
getImagesById:
SELECT *
FROM images
WHERE ad_id = ?
ORDER BY _id ASC;
就可以生成对应getImagesById(long ad_id)的Java代码.
LIBRARIES & CODE
Transitioner
定义两个使用ConstraintLayout封装的View,包装成一个transitioner,实现类似Shared Element的那种动画效果.
HighLite
高度基于Annotation的一个Android DB,通过@SQLiteDatabaseDescriptor,@SQLiteTable,@SQLiteColumn,@PrimaryKey等为主要注解,并且通过@JvmField支持Kotlin.
android-disposebag
通过绑定Activity或者Fragment的生命周期,初始化一个DisposeBag,将Rx的析构交给它做.支持RxJava/RxKotlin.
EasyAdapter
简化使用RecyclerView实现多类型复杂的List.
CounterView
简单的安卓计数器View控件.
Android Weekly Notes Issue #287的更多相关文章
- Android Weekly Notes Issue #230
Android Weekly Notes Issue #230 November 6th, 2016 Android Weekly Issue #230. Android Weekly笔记, 本期内容 ...
- Android Weekly Notes Issue #227
Android Weekly Issue #227 October 16th, 2016 Android Weekly Issue #227. 本期内容包括: Google的Mobile Vision ...
- Android Weekly Notes Issue #237
Android Weekly Issue #237 December 25th, 2016 Android Weekly Issue #237 这是本年的最后一篇issue, 感谢大家. 本期内容包括 ...
- Android Weekly Notes Issue #229
Android Weekly Issue #229 October 30th, 2016 Android Weekly Issue #229 Android Weekly笔记, 本期内容包括: 性能库 ...
- Android Weekly Notes Issue #221
Android Weekly Issue #221 September 4th, 2016 Android Weekly Issue #221 ARTICLES & TUTORIALS And ...
- Android Weekly Notes Issue #219
Android Weekly Issue #219 August 21st, 2016 Android Weekly Issue #219 ARTICLES & TUTORIALS Andro ...
- Android Weekly Notes Issue #236
Android Weekly Issue #236 December 18th, 2016 Android Weekly Issue #236 本期内容包括: Google的物联网平台Android ...
- Android Weekly Notes Issue #235
Android Weekly Issue #235 December 11th, 2016 Android Weekly Issue #235 本期内容包括: 开发一个自定义View并发布为开源库的完 ...
- Android Weekly Notes Issue #234
Android Weekly Issue #234 December 4th, 2016 Android Weekly Issue #234 本期内容包括: ConstraintLayout的使用; ...
随机推荐
- 借助csv用PHP生成excel文件
当你将xml文件改为csv后缀会发现原先的表格结构都变成用逗号隔开的一行一行数据,就像这样 编号,姓名,年龄 001,王宇,28 002,刘三,20 由此看来,如果能将PHP数据输出为这样的格式,然后 ...
- ASP.NET Core的身份认证框架IdentityServer4(1)-特性一览
IdentityServer4是ASP.NET Core的一个包含OpenID和OAuth 2.0协议的框架.OpenID和OAuth 的区别请看 https://www.zhihu.com/ques ...
- WPF TextBox按字节长度限制输入
前两天做一个项目的时候,由于页面没有限制TextBox的输入长度,所以,后台直接报错了,超出数据库最大的长度. 数据库的长度是按照字节来计算的,而且不同的编码格式,汉字占用的字节长度又不相同,比如,我 ...
- Python爬虫入门:综述
大家好哈,最近博主在学习Python,学习期间也遇到一些问题,获得了一些经验,在此将自己的学习系统地整理下来,如果大家有兴趣学习爬虫的话,可以将这些文章作为参考,也欢迎大家一共分享学习经验. Pyth ...
- 块级元素行内元素以及display属性
1.什么叫做标签语义化? ->合理的标签做合适的事情 ->HTML中常用的标签都有哪些? (块状标签和行内标签) ->块状标签和行内标签的区别? (常用的有8条区别) 1)内联元素: ...
- JavaScript系列----面向对象的JavaScript(1)
1.面向对象的编程 1.1.什么是面向对象编程 面向对象编程:即是把能够完成独立完成一部分功能的代码封装在一起,组成一个类. 举个例子来说: 这里有一把枪, 枪的种类很多,有步枪,机关枪,阻击枪... ...
- php 常用 常量集合
DIRECTORY_SEPARATOR 常量 DIRECTORY_SEPARATOR 目录分割符
- C#实现中国身份证验证问题
C#中国身份证验证,包括省份验证和校验码验证,符合GB11643-1999标准... 今天写的 C#中国身份证验证,包括省份验证和校验码验证,符合GB11643-1999标准... 理论部分: 1 ...
- linux系统下手动安装Angular-cli
安装Angular-cli 背景 由于公司linux服务器没有外网,无法通过npm包管理器直接安装,只能手动安装一个Angular-cli平台环境! 安装步骤 1. 先再linux系统下安装好node ...
- [转载] Comet:基于 HTTP 长连接的“服务器推”技术
转载自http://www.ibm.com/developerworks/cn/web/wa-lo-comet/ “服务器推”技术的应用 传统模式的 Web 系统以客户端发出请求.服务器端响应的方式工 ...