安卓开发小知识 - 3

内容来源:Android Development Tidbits // No. 3
这是第三次分享安卓开发中的一些小知识点。我们很高兴有这么多人知道了这个有趣的系列,并且对你们通过评论和邮件表达的支持表示感谢。最近我们开始利用开发的间歇时间在博客上分享我们知道的一些知识点。前两篇文章链接为12。这一周我们可能会分享一些比较老的知识点。好了,开始这次的内容。

Tips1
如果你使用ZXing 的QRCodeWriter来生成二维码,你会发现生成大图时会相当的慢。可以先参考下列代码创建 BitMatrix 进行图片转换处理。注意给BitmapDrawable设置setFilterBitmap(false)来避免失真。

BitMatrix matrix = new QRCodeWriter().encode("content here", BarcodeFormat.QR_CODE, 0, 0);
int height = matrix.getHeight();
int width = matrix.getWidth();
Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_4444);
for (int x = 0; x < width; x++) {
for (int y = 0; y < width; y++) {
bmp.setPixel(x, y, matrix.get(x, y) ? Color.BLACK : Color.TRANSPARENT);
}
}
BitmapDrawable qrCodeDrawable = new BitmapDrawable(getResources(), bmp);
qrCodeDrawable.setFilterBitmap(false);
imgQrCode.setBackground(qrCodeDrawable);

这里用Bitmap.Config.ARGB_4444是因为我需要的是二维码背景是透明的。如果只需要黑色或白色背景,使用Bitmap.Config.RGB_565就够了。如果担心这里出问题,也可以调整一下参数:

 BitMatrix matrix = new QRCodeWriter().encode("content here", BarcodeFormat.QR_CODE, 10, 10);

Tips2
可以用adb hell 代替adb shell。

Tips3
用TextUtils.concat()来拼接字符串,它会保留原有的分隔。

Tips4
最上层的控件会优先获得处理触摸事件的权利,但是父控件有拦截的权利,所以可以拦截事件传递,不分发给子控件。子控件如果调用setRequestDisallowInterceptTouchEvent 但是又不想子控件来处理触摸事件,只需要重写它,让方法内容为空。

Tips5
数据库的批量操作请使用事务,调用beginTransaction()和endTransaction()来开启关闭事件,并且只有当执行了setTransactionSuccessful() 方法后才会真正处理成功,否则会有endTransaction()回滚之前的操作。

Tips6
写测试程序时,避免写静态方法,因为framework提供的方法可能不会执行。

Tips7
使用Mockito来做测试,它用很简单的方式来处理复杂的对象依赖。

翻译说明:3篇文章都是比较简单或者常见的小知识,国内很多文章就有了,并没有提供技术含量较高或相对冷门有用的知识,,略失望。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值