keepattributes Signature

以前有一个问题非常让人困扰。应用开发测试的时候没有问题,打包apk后,经常莫名其妙的崩溃。检查log,发现抛出的错误如下: java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to me.relex.jsonparse.modle.ClassModle 根据log定位是使用jackson的ObjectMapper解析json时类型转换错误,只要一混淆就会崩溃…… 为了能尽快修复索性就不用ObjectMapper,改用Streaming解析。 最近想起来这个问题,趴在地上找找资料,一定是proguard哪里没有设置。终于关键性的就是下面这个 -keepattributes Signature 来自 gson proguard example的解释 Gson uses generic type information stored in a class file when working with fields. Proguard…

Read this article

Android 测量字符宽度的几种方法和场景

Android在测量计算字符的宽度有几种方法,稍微记录一下。 详细见下面的代码。 总结一下: measureTextWidth:用来测量普通文字的宽度,调用native层去测量。 getTextBounds:会按严格按照Paint的样式,绘制出文字的边界(设置倾斜后,绘制的文字被截断,但仍然能得到倾斜后的实际宽度),同样也是native层去测量。 Layout.desiredWidth:能测量包含Spanned的文字宽度,实际是调用TextLine的measure()计算。…

Read this article

自定义SwipeRefreshLayout

上次试用了一下v4包中新加入的SwipeRefreshLayout控件。虽然ActionBar-PullToRefresh没有强大,但后者使用实在太麻烦,与Actionbar耦合在一起,兼容性维护等等。 于是有空就修改一下SwipeRefreshLayout,顺便看看控件源码什么的。猜想实际使用可能遇到的需求扩展一下。 增加下拉的HeaderView,可以往里面放一些下拉彩蛋、广告什么的。 调整下拉逻辑,下拉到100%后不立刻执行刷新,松手后才开始刷新。 修正下拉悬停抖动…… 可以设置下拉时,子控件不跟随。(只有progressBar变化) 增加OnPullDownListener,监听下拉高度变化 Demo地址(注意需要切换到modify_swipe_refresh_layout分支) 关于修正下拉悬停抖动 源代码根据mTouchSlop的值来判断是否有滑动动作。 mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop(); 然后在onTouchEvent里前后两次滑动的差值与mTouchSlop判断,所以会忽略微小的滑动,导致下拉悬停抖动。 所以我就把mTouchSlop去掉了………

Read this article

SwipeRefreshLayout 试用

Android support library v4 包 19.1.0 版新增加了 SwipeRefreshLayout 控件。 Google Now的下拉刷新应该就是这个控件了。 试用了一下,功能简简单单,只能满足基本的下拉刷新需求。唯一出彩的就是可以改变进度条的颜色(只支持4种颜色)。另外按住下拉到一半时,如果停住不动又会收回去了。感觉有点奇怪。 写了个SwipeRefreshDemo,方便在Fragment使用。 PS: 和Chris Banes的ActionBar-PullToRefresh、Android-PullToRefresh相比,Google 官方的这个控件真的很弱啊(一共才3个类,还想怎样)………

Read this article

To be continued

离职啦,又入职啦~ 以前的数据丢啦,丢啦就丢啦~ 准备走的人要走啦,眼不见心不“烦”啦~ 攒了很久的缘分耗尽啦,耗尽了就继续从头攒吧! 重新开始呗。…

Read this article