2012-09-22 Android的滚动条实现细节
1. View::Draw
2. View::onDrawScrollBars
scrollBar.setParameters(computeVerticalScrollRange(),
computeVerticalScrollOffset(),
computeVerticalScrollExtent(), true);
3. View::onDrawVerticalScrollBar
scrollBar.draw
4. ScrollBarDrawable::draw
Rect r = getBounds();
if (drawTrack) {
drawTrack(canvas, r, vertical);
}
if (drawThumb) {
int size = vertical ? r.height() : r.width();
int thickness = vertical ? r.width() : r.height();
int length = Math.round((float) size * extent / range);
int offset = Math.round((float) (size - length) * mOffset / (range - extent));
// avoid the tiny thumb
int minLength = thickness * 2;
if (length < minLength) {
length = minLength;
}
// avoid the too-big thumb
if (offset + length > size) {
offset = size - length;
}
drawThumb(canvas, r, offset, length, vertical);
}上一页2013-01-21 ant 中通过重新定义 project.all.jars.path 在 classpath 中引入外部 jar 文件下一页2012-02-05 hostname自动变成bogon的问题
最后更新于