WEB开发网
开发学院手机开发Symbian 开发 自定义滚动条算法symbian 阅读

自定义滚动条算法symbian

 2010-10-20 07:59:55 来源:WEB开发网   
核心提示:自己搞定了,分享一下:1.算出滚动条的高度,自定义滚动条算法symbian,TInt height = 一屏显示的行数 * 屏幕高度 / 总行数2.根据第一步算出的高算出移动步长.TInt step = (屏幕高 - height) / 总行数;3.上下移动时增加或减少步长, ...lming 发表于 2009-4-8

自己搞定了,分享一下:

1.算出滚动条的高度。

TInt height = 一屏显示的行数 * 屏幕高度 / 总行数

2.根据第一步算出的高算出移动步长.

TInt step = (屏幕高 - height) / 总行数;

3.上下移动时增加或减少步长。 ...

lming 发表于 2009-4-8 16:14 php?goto=findpost&pid=31249&ptid=7850" target="_blank">[/quote]

可以参考浏览器接口的滚动条的回调参数。

virtual void MBrCtlLayoutObserver::UpdateBrowserVScrollBarL ( TInt aDocumentHeight,

TInt aDisplayHeight,

TInt aDisplayPosY

) [pure virtual]

你看,总共有3个参数。

第一个是整体文档的高度,第二个是屏幕显示的高度,第三个是当前开始显示点的高度。

根据这三个参数,应该可以应付各种滚动条的计算了。

# void CLabelControl::UpdateScrollBarFrameL()

# {

# // Set teh scrollbar visible if fields do not fit the screen

# if (iRowNum > iRows && iScrollBarFrame->VScrollBarVisibility()

# == CEikScrollBarFrame::EOff)

# {

# iScrollBarFrame->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff, // horizontal

# CEikScrollBarFrame::EOn); // vertical

# }

# // Hide the scrollbar if fields fit the screen

# else

# if (iRowNum <= iRows && iScrollBarFrame->VScrollBarVisibility()

# == CEikScrollBarFrame::EOn)

# {

# iScrollBarFrame->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff, // horizontal

# CEikScrollBarFrame::EOff); // vertical

# }

#

# // Update scroll bar position

# iVDsSbarModel.SetScrollSpan(iRowNum);

# iVDsSbarModel.SetWindowSize(iRows);

# iVDsSbarModel.SetFocusPosition(iRowIndex);

1 2  下一页

Tags:定义 滚动 算法

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接