整理本人实际开发中遇到的一些问题以及解决办法和一些开发技巧,以后会不定时更新。
tip:利用“目录”可快速导航
1.追溯sdk中某一个类随sdk版本升高导致的历史变迁。(find API changes)
问题来源:SwipeRefreshLayout源码:判断子View是否能向上滚动(或者是否滚动到顶部):
/**
* @return Whether it is possible for the child view of this layout to
* scroll up. Override this if the child view is a custom view.
*/
public boolean canChildScrollUp() {
if (android.os.Build.VERSION.SDK_INT < 14) {
if (mTarget instanceof AbsListView) {
final AbsListView absListView = (AbsListView) mTarget;
return absListView.getChildCount() > 0
&& (absListView.getFirstVisiblePosition() > 0 || absListView.getChildAt(0)
.getTop() < absListView.getPaddingTop());
} else {
return ViewCompat.canScrollVertically(mTarget, -1) || mTarget.getScrollY() > 0;
}
} else {
return ViewCompat.canScrollVertically(mTarget, -1);
}
}
进入Android开发官网,假如要查看View API的变化,输入View,选择android.view.View
,如图:
进入View的API参考页面(文档页),如图:
从图中可以看到三个主要信息:
- View是在API level 1添加的
- View的类层次
- 通过左侧的API level choose button 可以查看不同API level下的View API,进行纵向的查看,同时可以将不同API level下的View API进行横向对比。
追溯API 变化就是通过上述第三条实现的。比如我们想看看API level 13和 API level 14之间有什么变化,将左侧API level设置为13,查看方法列表:
我们会发现一些API 是灰色的,当鼠标hover过方法名时,会显示出一个提示,如图:
这个提示告诉我们:View中的canScrollVertically(int direction)
方法是在API level 14以后才添加的,另外canScrollHorizontally(int direction)
也是API level 14以后才添加的方法。当我把API level 切换到14时,发现