安卓开发的小技巧(3)

632 查看

又见面啦!欢迎来到安卓开发技巧系列的第三篇博文。

我们很高兴至今为止很多人已经发现了这个系列的有趣之处,很感谢你们通过评论和电子邮件的方式向我们表达你们的支持!

说给第一次来这里的朋友吧,很久以前我们(安卓团队)就已经在内部互相分享每周学习到的小技巧了。

最近,我们开始在博客上与其余的开发团队分享我们的小技巧。

你可以在 这里这里 找到我们较早以前的两篇博文。

可能最近某个星期我们将分享最早的几篇小技巧文章来博君一笑!好吧,言归正传,下面就是这周的小技巧。

技巧 1

如果你正在使用 ZXing 库中的 QRCodeWriter 来生成 qr 码,那么(用这种方法)生成大尺寸图像是相当慢的。实际上,你可以传递一个 0x0 的尺寸,这时将返回一个尽可能最小尺寸(每块是1像素)的 BitMatrix。

然后你可以把这个 matrix 写进 BitmapDrawable,并将其设置为某些视图的背景。

不过,你需要首先确保在 drawable 中调用了

,这样(图像)在缩放时不会变得模糊。

我使用 Bitmap.Config.ARGB_4444,因为我需要将 QR 码的背景设置成透明。如果你希望是黑白色的,可以使用 Bitmap.Config.RGB_565。

同时,如果你希望操作安全,你可以改变 QR 码的创建方式为

以防类库在未来不再接收 0x0 的尺寸,因为我相信一个 QR 码不可能小于1.0×1.0。

– 技巧贡献者, James Sun

技巧 2

下次你需要使用“adb shell”时可以键入“adb hell”试试。相信我。

– 技巧贡献者, Tyler Romeo

技巧 3

将会返回给你一个连接输入字符串的字符序列,并且保留了它们之间的间距。

– 技巧贡献者, Walker Hannan

技巧 4

“叶子”视图在触摸事件中享有优先权,但是“根”视图在拦截触摸事件时享有优先权,所以当你需要的是有子视图正在使用的触摸事件时,换成拦截事件吧。

同时,如果这个子视图正在调用

但是你并不希望它起作用,那么除了覆盖它不要做任何事。

– 技巧贡献者, Frank Doyle

技巧 5

你可以使用 SqliteDatabase 的 beginTransaction() 和 endTransaction() 来完成批量操作,但是你必须确保调用了

,否则一旦调用endTransaction(),你所做的改变将会回滚。

– 技巧贡献者, Walker Hannan

技巧 6

如果你正在做测试,你可能应该谨慎使用静态方法!为什么?在众多其他理由中,较恰当的一个理由是安卓框架提供的方法不能在测试中使用,因为他们是静态方法所以你不能将它们模拟出来。

– 技巧贡献者, Frank Doyle

技巧 7

如果你正在做测试,你应该试试 Mockito。它会帮助你将复杂对象依赖替换成超级简单的替换物。