关于滚动条的开发

来源:百度文库 编辑:神马文学网 时间:2024/05/05 04:58:31
滚动条实现专题:
滚动条是这样啊!!!
你看到的滚动条和PC网页上看到的滚动条是不一样的,网页上的滚动条可以用鼠标去点,
向下向上拉动有效果,手机游戏中的滚动条只不错是个装饰,也就是迷惑玩家用的,看起来像是在滚动
其实就是计算坐标
基本思路是:
1.在旁边设置一个滚动的小块
2.如果是图片滚动就弄个比屏幕高的图片,在按下DOWN的同时,右侧小块向下移动Y++;
而你的的图片则向上移动Y--;
3.最后控制下坐标,让你的小块到最下端时,图片正好到最上端.
我这样做出来过这个效果,可能不是很好,仅供参考!!!
-------------------------------------------------------------------------------------
小弟也是新手,这个滚动条的实现基本算法和楼上说的一样,至于调整与文本同步,你可以试试用当前显示文本的字节数(最末那个也行)处以总的字节数,得到一个百分比,怕不支持float类型就先扩大再缩小,比如先乘100再除文本总字节数,这样这个值就是滚动条末端位置了(如果使用的滚动条不是100个像素,可以通过计算调整成百分比对应的坐标)。
代码懒得写了,其实我对应用类程序没太大兴趣,不知道可不可以给楼主做参考。
-------------------------------------------------------------------------------------
我好像有个例子自己写了这个功能,要的话加Q:178656224
-------------------------------------------------------------------------------------
一个自定义的文本显示框(自定义换行,滚动条等)
支持自定义换行 " \\n"
滚动条实现
 bKfTFSHa.rar (166.04 KB)
ywfHsxjh.png (21.2 KB)
一个自定义的文本显示框(自定义换行,滚动条等)

跑起来了,小的问题(不良习惯)特别多,看得出来楼主是个新人呢。。。
另外一个大的问题是:
/** 屏幕全屏后的宽度 */
public static final int FULL_SCREEN_WIDTH = 240;
/** 屏幕全屏后的高度 */
public static final int FULL_SCREEN_HEIGHT = 320;
硬编码,换个尺寸的屏幕就不行了,改数值也不行。那滚动条看不见了。
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
[求助]请问能用Canvas实现带有滚动条和复选框的多列列表吗?
http://www.j2medev.com/bbs/viewthread.php?tid=26761&highlight=%B9%F6%B6%AF%CC%F5
如题,我做了一个简单的,能说明问题的图片,如下:

用Canvas画出列表是没有问题了。可是要怎样实现复选框和滚动条呢?可以用Canvas实现吗?
请高手指点!谢谢~~~


问题已经解决,谢谢大家关注。我来结帖了~~~
关于滚动条,我是这样做的:
1、先计算好滚动条的起点、长度、宽度等,用canvas画出滚动条
2、设置一个int类型的变量:startIndex,用来记录当前页面的第一条记录在整个数组中的索引号
3、设置一个int类型的变量:endIndex,用来记录最后一页的第一条记录在整个数组中的索引号
4、在pointerPressed(int x,int y)函数中解决滚动条上下端的三角形按钮事件,即点击三角形按钮就对startIndex的值做相应加减操作
5、在pointerDragged(int x,int y)函数中解决滚动条拖到问题,根据当前坐标值计算当前的startIndex的值
以上只是简单的说了一下解决思路,使用的是指针事件,希望对有同样问题的朋友有所帮助~~~
-------------------------------------------------------------------------------------
PS一下,我昨晚在一本教材上看到了translate(int x,int y)的使用实例,由此联想到滚动条的实现方法中也可以使用这个函数。这样重画就简单很多,只是坐标的平移而已。
函数说明:
1)public void translate(int x,int y)将当前的坐标系进行平移,在X轴方向平移x个单位,在Y轴方向平移y个单位,其中正值表示向右/下平移,负值表示向左/上平移。
2)可以使用public int getTranslateX()和public int getTranslateY()获得当前坐标系相对于原始屏幕坐标系在X和Y方向上的偏移量
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------