当 Android 手机设备进行横屏状态时,其虚拟按键的位置在不同版本上位置可能不同。
Config Multi GitHub Account on Windows
用 .git-credentials 文件的方式只能对每个站点配置一个账号。如果希望为同一个站点(比如 Github)配置两个账号的话需要用 ssh 实现。
EmojiEditText 控件会覆盖 XML 中定义的 inputType 属性
最近项目中引入了 support 26 中的 EmojiEditText (com.android.support:support-emoji:26.1.0
),我们自定义的 BaseEditText 也继承了 EmojiEditText。后来突然发现,在使用原生键盘输入密码的时候会出现单词联想提示了。而按理说,在 xml 里面设置了 inputType="textPassword"
的话,是不应该有联想提示的。
【译】在 RecyclerView 中使用 DiffUtil
原文:Using DiffUtil in Android RecyclerView
使用 DiffUtil 从而避免使用 notifyDataSetChanged 更新 RecyclerView 中的数据
一些 Elasticsearch 知识点
本文面向的环境是 ElasticSearch 5 系列版本。列一些在应用中碰到的知识点以便于查阅
升级到 AndroidStudio 3.0 Canary 之后新建 Kotlin 项目无法编译的问题
需要确认 kotlin_version 是否最新
为 Android 应用添加 RTL 语言支持
对于一款面向全球用户的 Android 应用来说,进行本地化处理是十分重要的。关于本地化涉及的全部内容,可以参考 Google Developer - Localization Checklist 。这里只介绍 RTL 布局中涉及的部分内容。
什么是 RTL 布局
我们平常都是以从左到右(Left-to-Right,LTR)的方向显示文本,但是对于阿拉伯语、希伯来语等语言,他们的文字是从右向左排列的,称为 Right-to-Left 布局,简称为 RTL。当我们处理 RTL 语言的时候,需要特别注意的一点是:在 RTL 语言中,并非仅有文本框的内容需要从右到左排列,而是整个页面的内容都要镜像过来,才符合 RTL 用户的使用习惯。
如何为 DFP Ads 自动添加 Test Device Id
在使用 DFP Ads 的时候,官方文档中会要求开发人员在测试广告的过程中必须使用测试广告 ID,并需要将测试的设备在代码中添加为测试设备才可以正常使用。但添加的过程有些麻烦:我们需要将测试设备连接至电脑,启动应用拉取广告,同时观察 logcat 中的日志,抓取到形如 ... addTestDevice("123456789ABCDEF0123456789ABCDEF0") ...
的 log 后,将其中的 Device Id 写到代码中并重新编译才可以。如果测试设备很多,就要对每个设备都抓一遍 log,比较繁琐。因此希望能够在代码中自动抓取 DFP Ads 输出的 log,提取出 Test Device Id,并添加到代码中。这样就可以做到每个新的设备都可以在拉取一次广告后将自身加为测试设备了。
实现基本如下:
一个神奇的 Bug:在 Win10 中使用 MacType 导致 Git rebase 命令出现问题
之前换了浏览器,然后突然想试试看 MacType 。查了一下发现 MacType 并不支持 Win10,但它没有说为什么不支持,我就强行装了一个用了用。刚开始用的时候感觉还行,虽然碰到一些权限问题,但基本上能用。结果用着用着突然发现我的 Git 无法正常的执行 rebase 操作了。比如,在 b 分支上执行 git rebase a,结果实际效果却似乎是在 b 上执行了 git rebase origin/b。而且 rebase 过程中碰到了冲突之后会卡主,即使冲突解决了也无法 git rebase –continue,甚至连 git rebase –abort 也不行。命令行会一直卡在 rebase 的过程状态。
刚碰到这个问题的时候我查了很久也没找到解决方案,而且除了 git 命令行之外,我还尝试了在 git gui 中与 source tree 中使用 rebase 功能,效果都一样。最后想破了头想到,这个问题好像是启用了 MacType 之后才引起的。卸载 MacType 并重启之后,git rebase 就正常了。
Multi-Flavor in Android Studio
如何为多个 Flavor 配置不同权限
Multi-Flavor 的一个重要功能是针对于不同的 Flavor 加载不同的代码。通过此功能,我们可以实现为多个 Flavor 配置不同应用权限的效果。
具体方式可参考这篇文章:Android: How to Implement ProductFlavor-Dependent Permissions with Gradle .
通过这种方式,我们可以将所有 Flavor 共有的部分放在默认的 AndroidManifest 文件中,然后针对不同的 Flavor 再实现各自额外的内容。在编译对应 Flavor 的时候,其各自的 AndroidManifest 文件会跟默认的 AndroidManifest 文件合并,相同节点的内容会合并到一起。非常方便。