您好,欢迎来到二三四教育网。
搜索
您的当前位置:首页Android Weekly Notes Issue #251

Android Weekly Notes Issue #251

来源:二三四教育网

Android Weekly Issue #251

ARTICLES & TUTORIALS

Android O新推出了一个API, 是给View加tooltips.

它们的外观看起来就像一个toast(半透明的灰色方框, 有圆角). 它支持多行, 有最大宽度, 超过98个字符结尾会以...省略.
目前还不能被定制.

它在什么时候出现呢? 长按和悬停.
当然你的长按如果已经被处理过了(OnLongClickListener返回了true), 它就不会出现了.

字体尺寸

对于字体, 通常我们建议用sp(scaleable pixel), 1pt=1sp. (pt是point).

sp考虑到了用户设备上的字体设置, 所以通常是建议用sp来设置字体大小.

但是作者他们最近在应用中一些字很大的地方, 选择使用了dp (density-independent pixel), 这是因为这些字本来已经很大了, 所以他们不想让它们被调节以后变得更大.

Leading

在字体排版中, Leading是指字体行之间的竖直间距. 和line spacingline height是同义词, 同样也由pt/sp作为单位.

字体文件中会有一个基本的leading值, 根据字体不同可能会不同.

Tracking

Tracking指字间距(letterspacing).
在Android中可以通过属性letterSpacing来设置(API 21及以上), 以em为单位的分数测量.

关于是否应该使用Kotlin, 作者发表了一些他的想法. 总体来说作者是支持Kotlin的, 对于各个可能存疑的点, 他都做出了解释.

在Toolbar上点击搜索按钮, 展开关键词输入框的时候, 加一个动画, 让它有弹性地震动一下, 如何实现呢?
本文给出了详细代码.

如何在测试中使用lambda表达式, 这篇文章里作者讨论了如何在项目中使用lambda表达式的一些方法.

有两个比较好的方法:

  • 用.
  • 用Kotlin.

如何用Mockito和Espresso给一个MVP架构的程序写单元测试和UI测试.

这篇文章就说native的客户端开发应该扩展自己, 学一点后端知识, 来应对行业发展和以后的趋势.

Dependency Injection (DI)依赖注入是一种概念, 和具体使用的工具无关, 所以有各种不同的方法可以实现它.
本文只是提供一种思路, 用Kotlin中函数式的一些特性来做依赖注入.

后来作者举了实际的例子, 详情见原文.

关于Kotlin中的lambda是如何简化的, 以setOnClickListener()为例:
它在Java中是这样定义的:

public void setOnClickListener(OnClickListener l) {
   ...
}

在Kotlin中是这样的:

fun setOnClickListener(l: (View) -> Unit)

最原始的写法:

view.setOnClickListener(object : View.OnClickListener {
    override fun onClick(v: View?) {
        toast("Hello")
    }
})

然后IDE会提示你改为用lambda表达式:

view.setOnClickListener({ v -> toast("Hello") })

然而这个还可以进一步被简化:

如果一个方法的最后一个参数是一个函数, 那么它可以写在括号外面:

view.setOnClickListener() { v -> toast("Hello") }

如果一个方法只有一个参数, 并且是一个函数, 括号可以被删掉:

view.setOnClickListener { v -> toast("Hello") }

如果你并没有用到lambda表达式的参数, 你可以省略左边的部分:

view.setOnClickListener { toast("Hello") }

如果你的表达式只有一个参数, 而你要用它, 你仍然可以不写左边的部分, 用it来代替它:

view.setOnClickListener { doSomething(it) }

如何在不改变代码的情况下, 增加Java代码的可读性?

IntelliJ IDEA为Java 8以下的用户提供了代码折叠功能, 来模拟lambda的语法.

(经过折叠以后的Java代码确实看起来很像Kotlin).

本期还有两篇Android Things的文章就不介绍啦.

LIBRARIES & CODE

一个带弹性抖动动画的搜索Toolbar实现, 本期有一篇文章介绍.

一个轻量级的组件化协议框架, 用来解耦复杂项目.

Telegram是一个通信应用, 关注速度和安全. 这是该应用的官方开源代码.

一个给图片加数字小标(badges)的库.

这个工具可以计算出你依赖的库在apk的classes.dex中到底占多少大小.

一个类似于DrawerLayout的ViewGroup, 抽屉部分隐藏在内容的下面. 内容可以向右滑动缩小以露出抽屉.

最后, 欢迎订阅公众号: 圣骑士Wind:


圣骑士Wind微信公众号.png

Copyright © 2019- how234.cn 版权所有 赣ICP备2023008801号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务