最近画一个自定义 view,涉及到蛮多 draw text 的地方,算是把恼人的文字对齐大体熟悉了。
Android 在 draw 一段 text 的方法如下
1 | public void drawText(String text, float x, float y, Paint paint) |
方法有四个参数,除了 y 其他都蛮好理解的。那么 y 为什么难理解呢?因为我们不知道 y 定义的是哪里的位置?文字的顶部?底部?还是中间?其实我们是一头雾水。
最近画一个自定义 view,涉及到蛮多 draw text 的地方,算是把恼人的文字对齐大体熟悉了。
Android 在 draw 一段 text 的方法如下
1 | public void drawText(String text, float x, float y, Paint paint) |
方法有四个参数,除了 y 其他都蛮好理解的。那么 y 为什么难理解呢?因为我们不知道 y 定义的是哪里的位置?文字的顶部?底部?还是中间?其实我们是一头雾水。
这是一位微信出来的哥们儿写的开源项目,解决表情 Panel 和键盘冲突的问题。本人之前做布丁动画时一直有这个困扰,看到这个项目,真是有种春风拂过泸沽湖的感觉。
为每个 Activity 绑定一个 url 可以方便的让第三方 app 直接打开这些 Activity。也可以方便在 app 内部进行页面跳转,解耦。
NullPointException 是 Android 开发中最常见,也最容易 fix 的异常之一。每当发生 NullPointException 时,解决方案大多都是根据错误堆栈,获取错误行数,然后加个 if (someObject != null)
的判断。看似简单的 fix,实际开发中,我们也不可能会对每个需要使用的 Object,进行非空判断,这样会导致代码十分冗余,而且,这样做,有些非空判断,可能永远都是返回 true. 除了给代码添加行数外,也没什么实际意义。
所以,问题的关键是,要辨别对象是否可能为空,然后给可能为空的变量进行非空判断。下面总结了几种策略来帮我们处理辨别对象是否为空的情况。
Android 原生的 Toast 十分好用,功能也很强大,扩展性也十分 OK,但是有一个致命的缺点:一旦用户屏蔽了 App 的通知权限,则 Toast 也不会显示了!