July 1st, 2018

Android Weekly Issue #316

本期内容包含教你使用Kotlin通过Annotation Processor生成代码文件, JetPack中的Android KTX, 以及升级到Target26所需要注意的东西,还包含如何使用KTX简化AndroidX里面的Slice的Build,以及如何通过MotionLayout方便实现动画的系列,还有MLKit中扫条形码的Lib介绍,以及一些譬如Kotlin MVVM, Koin依赖注入做Test, UI Test去除动画,入行一年感受,DialogFLow来做面试机器人等等的有趣内容.

ARTICLES & TUTORIALS

Generating Code via Annotations in Kotlin

文章介绍了如果用Kotlin来写Annotation Processor生成代码.

两个关键的Lib

	\\ Code generation library for kotlin, highly recommended
implementation 'com.squareup:kotlinpoet:0.7.0' \\ configuration generator for service providers
implementation "com.google.auto.service:auto-service:1.0-rc4"
kapt "com.google.auto.service:auto-service:1.0-rc4"
  • 首先需要通过annotation class定义自己的Annotation.
  • 其实继承AbstractProcessor实现自己的Processor, 通过@AutoService注册到系统的Processor.class上去.复写process方法生成代码.

Android KTX - Android development with Kotlin

之前已经有不少Kotlin的语法糖了,这次JetPack推出的是Android官方的KTX,其主要实现原理就是通过给已有的Framework添加很多方法或者变量的Extension.

类似于Anko, 支持的列表在这里,当然对于类似的Project, 学习是一个过程.

Remember, remember… to target API 26 on November!

文章列举了要逐步将Target升级到26所需要注意的东西.

Marshmallow 6.0 Level 23

  • Runtime Permission
  • 删除了Apache Http Client
  • 从OpenSSL到BoringSSL
  • 删除Notification.setLatestEventInfo()

Nougat 7.0 Level 24

  • 限制后台网络,删除了CONNECTIVITY_ACTION广播通知,以及Intent中的 ACTION_NEW_PICTUREACTION_NEW_VIDEO.
  • App外无法通过file://访问私有文件.
  • 链接非NDK的Lib不行了.

Nougat 7.1 Level 25

  • App Shortcuts
  • 支持Image到Keyboard里,通过Commit Content API.
  • 添加了android:roundIcon

Oreo 8.0 Leve26

  • 必须通过startForegroundstartForegroundService来启动前台的服务,无法启动后台服务.
  • 移除了几乎所有的隐式广播,除了部分.
  • 后台位置信息收到限制,推荐使用GCM的FusedLocationProviderClient或者Geofencing.
  • 必须制定Notification Channel,否则收不到通知.

My first weeks as an Android Dev

介绍了自己第一周做Android开发的经历,面对自己的任务,接触到了譬如Design,ConstraintLayout,Data Binding & ViewModel, DI,以及Kotlin的东西,有点应接不暇.

Espresso animations disabled flag

通过设置flag来禁止测试中动画, 方便测试.

testOptions {
animationsDisabled = true
}

Exploring Firebase MLKit on Android: Barcode Scanning (Part Three)

文章介绍了用Firebase的VisionBarcode来扫条形码.

Introducing Slice Builders KTX

Android Slice是最新推出的AndroidX里面的控件,主要是给Google Search App来提供一些类似Google Assistant的那种UI,支持静态与动态的布局.

KTX也推出了对该组件的支持,以便通过Kotlin来简化Slice Build使用过程.

如:

list(context, sliceUri, ListBuilder.INFINITY) {
row {
setTitle("Hello world")
}
}

Building an Action to Solve a Real World Problem: Part 1, Plan & Design

通过Dialogflow等一系列技术搭建了一个给面试者出题的训练系统,根据对话提供不同的题目.

Introduction to MotionLayout (part I)

介绍了Google最新的ConstraintLayout 2.0的子类MotionLayout的使用,它可以通过在xml文件里定义的MotionScene来指定一些动画.

这些都是通过TransitionManager完成的,它会自己计算开始与结束之间的位置,完成动画,有点像Activity之间的SharedElement Transition Animation.

Testing with Koin

通过Koin依赖注入框架来简化Kotlin Test里面的mock注入.

MVVM with Kotlin

介绍了Kotlin下Android的MVVM的全套实践,包含了DataBinding, Retrofit, Dagger等等.

Introducing adb-enhanced: A swiss army knife for Android development

一个Python的应用, enhance的adb,可以方便的进行clean安装,节能模式,doze模式的调试等等.

pip3 install adb-enhanced

LIBRARIES & CODE

ColorPickerView

一个选择颜色的picker view

adb-enhanced

上面介绍的加强型Adb

Android Weekly Notes Issue #316的更多相关文章

  1. Android Weekly Notes Issue #230

    Android Weekly Notes Issue #230 November 6th, 2016 Android Weekly Issue #230. Android Weekly笔记, 本期内容 ...

  2. Android Weekly Notes Issue #227

    Android Weekly Issue #227 October 16th, 2016 Android Weekly Issue #227. 本期内容包括: Google的Mobile Vision ...

  3. Android Weekly Notes Issue #237

    Android Weekly Issue #237 December 25th, 2016 Android Weekly Issue #237 这是本年的最后一篇issue, 感谢大家. 本期内容包括 ...

  4. Android Weekly Notes Issue #229

    Android Weekly Issue #229 October 30th, 2016 Android Weekly Issue #229 Android Weekly笔记, 本期内容包括: 性能库 ...

  5. Android Weekly Notes Issue #221

    Android Weekly Issue #221 September 4th, 2016 Android Weekly Issue #221 ARTICLES & TUTORIALS And ...

  6. Android Weekly Notes Issue #219

    Android Weekly Issue #219 August 21st, 2016 Android Weekly Issue #219 ARTICLES & TUTORIALS Andro ...

  7. Android Weekly Notes Issue #236

    Android Weekly Issue #236 December 18th, 2016 Android Weekly Issue #236 本期内容包括: Google的物联网平台Android ...

  8. Android Weekly Notes Issue #235

    Android Weekly Issue #235 December 11th, 2016 Android Weekly Issue #235 本期内容包括: 开发一个自定义View并发布为开源库的完 ...

  9. Android Weekly Notes Issue #234

    Android Weekly Issue #234 December 4th, 2016 Android Weekly Issue #234 本期内容包括: ConstraintLayout的使用; ...

随机推荐

  1. 如何破解linux用户帐号密码二

    转载 0x01 前言: 今天拿了个linux的主机,提下来了,以前提成root之后就没深入过,这次想着先把root密码破解出来: 以前交洞的时候只是单纯证明存在/etc/passwd和/etc/sha ...

  2. GridView.setChoiceMode(GridView.CHOICE_MODE_MULTIPLE_MODAL)不兼容低版本号系统解决方式

    项目开发中须要使用GridView批处理操作,多项选择. 可是GridView.setChoiceMode(GridView.CHOICE_MODE_MULTIPLE_MODAL)不兼容低版本号. 找 ...

  3. 选择一个 Python Web 框架:Django vs Flask vs Pyramid

    Pyramid, Django, 和 Flask都是优秀的框架,为项目选择其中的哪一个都是伤脑筋的事.我们将会用三种框架实现相同功能的应用来更容易的对比三者.也可以直接跳到框架实战(Framework ...

  4. 简单记录一次ORA-00600: internal error code, arguments: [2662]

    接上一个,REDO报错搞定后OPEN数据库时又报错ORA-00600: internal error code, arguments: [2662]. 原因是_ALLOW_RESETLOGS_CORR ...

  5. 数据挖掘之pandas

    sdata={'语文':89,'数学':96,'音乐':39,'英语':78,'化学':88} #字典向Series转化 @@ >>> studata=Series(sdata) & ...

  6. Chrome自带恐龙小游戏的源码研究(完)

    在上一篇<Chrome自带恐龙小游戏的源码研究(七)>中研究了恐龙与障碍物的碰撞检测,这一篇主要研究组成游戏的其它要素. 游戏分数记录 如图所示,分数及最高分记录显示在游戏界面的右上角,每 ...

  7. ReentrentLock重入锁

    ReentrentLock lock=new ReentrentLock(); lock.lock(); //锁的代码 finally{ lock.unlock(); } ReentrentLock ...

  8. iOS开发系列--让你的应用“动”起来【转载】

    概览 原文链接:http://www.cnblogs.com/kenshincui/p/3972100.html 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥i ...

  9. js将字符串转变成数字

    方法主要有三种 转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把值转换成浮点数.只有 ...

  10. 【demo练习三】:图片水平滚动、点击按钮变更图片动画

    要求:四张图片水平滚动,每隔5秒进行一次循环,点击按钮随机变更图片. XAML前台代码: <Window x:Class="图片滚动.MainWindow" xmlns=&q ...