Android Weekly Issue #322

August 12th, 2018

Android Weekly Issue #322.

本期内容包括: 键盘的图像支持; 网络安全实现; Kotlin Native插件; MotionLayout实现折叠Toolbar; MotionLayout的关键帧和路径动画; 用Sceneform渲染3D物体; Paging Library的使用; 如何在文字底部绘制一个带圆角的背景, 可跨行; Google Play的新计划; aapt2的更准确的控制; 系统和应用中关于Accessibility的实现讨论.

新闻部分: Android 9 Pie发布啦!

ARTICLES & TUTORIALS

Exploring Image Keyboard Support on Android

Image Keyboard Support (IKS)是Android 7.1 (API level 25)引入的, 允许我们用输入法查询和发送更丰富的内容.

注: 这个API同样在support库中支持: v13 Support Library as of revision 25.0.0.

本文讨论了这个API如何工作和使用.

Securing Network Data Tutorial for Android

保护网络数据:

  • 用HTTPS来做网络请求.
  • 用证书来信任一个连接.
  • 验证传输数据的完整性.

第一部分解释了为什么要用HTTPS请求.

如何强制应用所有的网络请求都用HTTPS(Android N and higher):

添加一个文件: res\xml\network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="false">
<domain includeSubdomains="true">github.io</domain>
</domain-config>
</network-security-config>

在Application中使用它:

<application android:networkSecurityConfig="@xml/network_security_config"

第二部分解释了证书是什么, 以及Certificate pinning.

一个查看证书的网站: SSL Labs.

这个public key同样也是添加在上面那个network_security_config.xml文件里. 但如果想要在Android N以下支持, 可以使用第三方库, 比如TrustKit.

本文后面还有详细解释加密验证等方面的内容.

Droidcon App with Kotlin Native Gradle

在Droidcon App中使用了gradle插件kotlin-native.

MotionLayout – Collapsing Toolbar – Part 1

作者推荐一个关于MotionLayout的介绍文章: Introduction to MotionLayout (part I).

本文介绍如何用MotionLayout实现Collapsing Toolbar的效果.

之前可以用CoordinatorLayoutCollapsingToolbarLayout来实现这个效果. 也没什么不对.

MotionLayout提供了更多的自由性.

文本详细解释了实现细节.

Defining motion paths in MotionLayout

这个作者写了一系列关于MotionLayout的文章.

本文讨论MotionLayout中的关键帧和路径动画相关.

Render 3D objects at Runtime using Sceneform

ARCore Cupcakes是一系列的博客文章, 主要是ARCore和Sceneform的Android开发相关.

本文教大家如何使用Sceneform来渲染3D物体.

7 Steps to implement Paging library in Android

7步在Android中实现Paging Library:

  • 增加依赖.
  • 用Retrofit取数据.
  • 建立DataSource, 有三种选择.
  • 建立DataSourceFactory.
  • 建立ViewModel.
  • 写好Adapter.
  • 写好Activity.

作者的Demo在这里.

Drawing a rounded corner background on text

如何给文字加上带圆角的背景呢? 可以跨行, 也支持从右到左.

分析了需求之后, 最终的解决方案是写一个自定义的TextView.

例子代码: RoundedBackground-Kotlin.

Looking forward with Google Play

总结了Google Play过去这一年做出的重大改变以及下一年的计划目标等.

Increased accuracy of aapt2 "keep" rules

aapt2提供了更加精细的控制力度, 可以明确指定哪个构造函数被保留, 这样可以减少APK中最终的方法数.

How VRT puts accessibility first

Android系统提供的一些辅助设置:

  • 放大字体: Settings > Display > Font Size.
  • 放大显示: Settings > Display > Display Size. (Android 7.0).
  • 颜色校正: Settings > Accessibility > Color Correction.

这些都是系统级的, 开发者不需要在应用中实现.

盲人需要借助另一个应用, 比如TalkBack, 这种应用会给用户震动反馈, 读出屏幕上的内容. 所以作为应用的开发者, 我们应当确保所有的view都有正确的内容描述, 并且有一个合理的布局, 遵循Material的规定和一些惯例.

注: 在开发时可以打开这个: Talkback settings > Developer Settings > Display speech output. 这样读出的内容就会显示成文字, 不会打扰到其他人.

其他辅助应用还有: Brailleback, Switch Access.

一些开发者工具:

  • Accessibility Scanner App: 扫描你的应用, 给出更好地提供辅助的建议.
  • Android Studio也会给出一些建议: 颜色对比度不够, ImageView没有contentDiscription, 字太小等.

文章后面是作者他们应用的一些实践.

LIBRARIES & CODE

Ferris Wheel

一个会动的摩天轮.

folding-cell-android

一个可以折叠的View, 动画效果很炫.

multiplatform-settings

Kotlin写的跨平台保留键值对设置的工具.

News

Introducing Android 9 Pie

更加智能

A smarter smartphone, with machine learning at the core.

更加方便

Getting the most from your phone -- more easily.

  • 新的系统导航. 可以滑动显示全屏预览, 然后点击进入.
  • 显示cutout(刘海).
  • 通知和智能回复.
  • 字体放大.

安全和隐私

  • 生物识别认证提供了系统弹框.
  • Protected Confirmation.
  • Stronger protection for private keys.
  • DNS over TLS.
  • 默认HTTPS.
  • Compiler-based security mitigations.
  • 用户隐私方面: 闲置的应用不能访问传感器, 读取build.serial现在需要权限.

相机, 音频和图像的新体验

  • 相机: 多相机API, Session parameters等.
  • HDR VP9 Video和HEIF图像压缩.
  • 音频的动态处理API: DynamicsProcessing.
  • 图像解码API: ImageDecoder.

网络连接和地理位置

  • Wi-Fi RTT室内定位.
  • JobScheduler根据网络状态更好地处理任务.
  • Open Mobile API for NFC payments and secure transactions.

性能

  • ART performance.
  • 为Kotlin做的优化.
  • Modern Android.

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

  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. mac 配置pylucene

    1 . 安装python 2  安装ant 3  下载pylucene 4  cd jcc , vim setup.py , 查看java路径和python路径是否正确 5 python setup. ...

  2. DotnetBrowser入门教程-(1)浏览器控件使用

    先简单介绍下DotnetBrowser作为基本浏览器控件的使用: 1.创建基于.net 4.0的桌面项目,如下所示: 2.首次使用的时候在工具栏里添加dotnetbrowser控件,如下图所示: 3. ...

  3. c 数组做为形參时 该參数退化为指针

    当数组做为函数的形參的时候,该參数退化为指针,而且是无法直接求得数组的大小. 传数组给一个函数.数组类型自己主动转换为指针类型,因而传的实际是地址. void func(int array[10]) ...

  4. mysql root密码忘记最快方法

    在my.cnf [mysqld]栏添加 skip-grant-tables 然后重启/etc/init.d/mysqld restart mysql ##select password('新密码') ...

  5. java命令行

    Launches a Java application. Synopsis java [options] classname [args] java [options] -jar filename [ ...

  6. EMI-CLK信号串电阻并电容

    一般DMIC的CLK都会EMI超标,所以看到的案子这个DMIC CLK信号都会源端串接电阻和并电容 1,串电阻是为了信号的完整性,考虑到匹配的,一般说来这个电阻不是固定的,要随实际的PCB的走线的阻抗 ...

  7. C​P​U​_​C​S​t​a​t​e​_​P​S​t​a​t​e and then ACPI on Wiki

    http://wenku.baidu.com/link?url=eHbdT4EjdJx3dsQETGUIL8q1K3_EyuzGLWT0G103AEca0vs0gHR_v_3c0oaUL2gbkrr8 ...

  8. Scrapy教程

    Scrapy教程 原文地址https://doc.scrapy.org/en/latest/intro/tutorial.html 此教程我们假设你已经装好了Scrapy,如果没有请查看安装指南.. ...

  9. 【Linux】OpenWRT的无线设置注意事项——从2.4G到5G,hwmode不简单

    硬件说明: 操作系统:OpenWRT 网卡:AR9220R52Hn 网卡驱动:ath9k OpenWRT在刷机完成之后,并不会自动开启无线功能,需要手动修改配置文件,然后重启网络服务.管理无线功能的配 ...

  10. Android 音频 OpenSL ES 录音 采集

    1,; int channelConfig = AudioFormat.CHANNEL_OUT_STEREO; int audioFormat = AudioFormat.ENCODING_PCM_1 ...