android ScrollView实现原理,求助!

能解释下ScrollView滚动显示的原理吗?就比如说你的ScollView有LinearLayout然后LinearLayout内有100个Button(id=1,2,3,4......),创建初,屏幕显示id=1~10的Button,当你向下拖的时候如何重新绘制控件,显示id=3~12的Button,我看ScrollView的源代码,并没有找到这部分功能,不知道能否解释下到底是怎么实现的,在哪里实现的?多谢!!

suannai0314
鹳狸媛 楼主的这个问题解决了么?下边的答案能解决问题么?如果可以麻烦点击答案旁的√采纳哦~如果没有也可以将自己的答案贴上然后进行采纳的。
接近 6 年之前 回复

1个回答

01.package com.ql.view;

02.

03.import android.content.Context;

04.import android.os.Handler;

05.import android.os.Message;

06.import android.util.AttributeSet;

07.import android.view.MotionEvent;

08.import android.view.View;

09.import android.widget.ScrollView;

10.

11.public class LazyScrollView extends ScrollView{

12. private static final String tag="LazyScrollView";

13. private Handler handler;

14. private View view;

15. public LazyScrollView(Context context) {

16. super(context);

17. // TODO Auto-generated constructor stub

18. }

19. public LazyScrollView(Context context, AttributeSet attrs) {

20. super(context, attrs);

21. // TODO Auto-generated constructor stub

22. }

23. public LazyScrollView(Context context, AttributeSet attrs, int defStyle) {

24. super(context, attrs, defStyle);

25. // TODO Auto-generated constructor stub

26. }

27. //这个获得总的高度

28. public int computeVerticalScrollRange(){

29. return super.computeHorizontalScrollRange();

30. }

31. public int computeVerticalScrollOffset(){

32. return super.computeVerticalScrollOffset();

33. }

34. private void init(){

35.

36. this.setOnTouchListener(onTouchListener);

37. handler=new Handler(){

38. @Override

39. public void handleMessage(Message msg) {

40. // process incoming messages here

41. super.handleMessage(msg);

42. switch(msg.what){

43. case 1:

44. if(view.getMeasuredHeight() <= getScrollY() + getHeight()) {

45. if(onScrollListener!=null){

46. onScrollListener.onBottom();

47. }

48.

49. }else if(getScrollY()==0){

50. if(onScrollListener!=null){

51. onScrollListener.onTop();

52. }

53. }

54. else{

55. if(onScrollListener!=null){

56. onScrollListener.onScroll();

57. }

58. }

59. break;

60. default:

61. break;

62. }

63. }

64. };

65.

66. }

67.

68. OnTouchListener onTouchListener=new OnTouchListener(){

69.

70. @Override

71. public boolean onTouch(View v, MotionEvent event) {

72. // TODO Auto-generated method stub

73. switch (event.getAction()) {

74. case MotionEvent.ACTION_DOWN:

75. break;

76. case MotionEvent.ACTION_UP:

77. if(view!=null&&onScrollListener!=null){

78. handler.sendMessageDelayed(handler.obtainMessage(1), 200);

79. }

80. break;

81.

82. default:

83. break;

84. }

85. return false;

86. }

87.

88. };

89.

90. /**
91. * 获得参考的View,主要是为了获得它的MeasuredHeight,然后和滚动条的ScrollY+getHeight作比较。
92. /

93. public void getView(){

94. this.view=getChildAt(0);

95. if(view!=null){

96. init();

97. }

98. }

99.

100. /
*
101. * 定义接口
102. * @author admin
103. *
104. */

105. public interface OnScrollListener{

106. void onBottom();

107. void onTop();

108. void onScroll();

109. }

110. private OnScrollListener onScrollListener;

111. public void setOnScrollListener(OnScrollListener onScrollListener){

112. this.onScrollListener=onScrollListener;

113. }

114.}

u011404046
名字随便取吧 这是什么?我问的是源代码里的问题···
接近 6 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Android ScrollView
可捲動的View 物件範例 用於 Android 4.x
android ScrollView
android ScrollView
Android ScrollView嵌套ScrollView滚动的问题解决办法
引用:http://fenglog.com/article.asp?id=449 Android ScrollView嵌套ScrollView滚动的问题解决办法 原文地址:http://trivedihardik.wordpress.com/2011/09/19/scrollview-inside-scrollview-scrolling-problem/ 搞技术的多少看的懂E文,也不翻...
Android ScrollView嵌套ScrollView,并且嵌套的ScrollView超过屏幕部分
问题:我在ScrollView里面嵌套了一个ScrollView,嵌套的ScrollView超出了屏幕显示部分,需要向下滑动才能看到,当滑动下去找到嵌套的ScrollView时,滑动时并不能触发它的onTouch()事件。Android的Touch传递机制,这里不详细介绍了,有想了解的,推荐http://blog.csdn.net/chunqiuwei/article/details/4108492
求助:Redo,Undo的实现原理
Redo,Undo的实现原理是什么?
求助:QQ的实现原理
各位大哥,小弟最近在做类似QQ的即时通讯软件,从网上找了一些IM的资料,QQ的通讯原理是否和下图一样:rn |IM服务器|rn / \rn / \rn LOGIN/OUT /TCP/UDP \rn / \rn / \rn |用户A|------------|用户B|rn TCPrn还有如下问题:rn1.是不是每个用户都要以TCP连接登陆了IM服务器?如果是这样,IM服务器不是要启动相应的监听线程,那服务器的负荷是不是会很重?QQ是如何做到的?rn2.QQ是不是TCP和UDP一起用?如果用UDP,如何做到信息的可靠发送?rn3.QQ用的是UDP打洞技术还是HTTP遂道?rn4.因为用户一般都是在局域网内,地址都为私有IP,IM服务器是如何将信息转发到用户的?
求助:联众游戏的实现原理
有哪位知道联众游戏的实现原理,这种游戏一般是用什么工具开发的,他属于哪种类型的软件,他是b/s结构的,还是c/s结构的?谢谢!
android ScrollView的用法
我想给activity加入滚动条,xml文件格式为rn[code=XML][/code] rnrnrnrn rn rn rn rn rn rn rnrn可是这样的结果是内容未全屏显示,则已经出现滚动条,致使内容未全屏显示,想实现内容大于屏幕时才出现滚动条,有人知道如何解决吗?
Android scrollview 滚动条
Android scrollview 滚动条
android srcoll HorizontalScrollView scrollview
滑动效果代码,说明见: http://blog.csdn.net/maigan323/article/details/7034200
android的ScrollView的简单使用
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
Android 实现无限滚动的ScrollView
用ScrollView实现类似 新闻头条或广告图的无限滚动 思路是在看智能社的JavaScript相关视频时候想到的,具体就是讲动画那个节,实现图片的无缝滚动 在这里就不讲了(主要是讲也讲不明白==) 本来是直接写在Activity里面,后面为了复用,直接封装成一个EndlessScrollView类和EndlessHorizontalScrollView类 其中Endle
Android ScrollView 的内容显示不全
[img=https://img-bbs.csdn.net/upload/201308/30/1377846714_510114.png][/img]rnScrollView中的LinearLayout本来是能正常显示的,但是在添加了第18行语句:rn android:layout_marginTop="20dp"rn之后,上面多出来了20dp的边距,这是对的。rn但是为什么下边却少了20dp呢? 导致滚动条拖不到最低端,所以最下面的按钮显示不全。rnrn这是怎么回事?xml代码如下:rn[code=html]rnrn rn rn rn rn rn rn rn rn rn rn rn rn rn rn[/code]
android scrollview viewpager 冲突
android scrollview viewpager 冲突
android自定义scrollview
自定义scrollview来实现滑动列表项。PS:使用时在xml中调用,只能有一个直接子组件
android 滑动切换(包含ScrollView)
最近做的项目,要用到滑动切换的效果,就是类似新闻客户端的图片一张一张的自动切换或者手动滑动切换,于是就搜集了一下资料,使用两种方式实现这样的效果,分别是ViewFlipper和ViewPager。这两种方式都比较容易的实现了手势滑动,但是ViewFlipper更容易实现循环滑动切换
android scrollview 上拉下拉刷新
android中scrollview 的上拉下拉刷新控件demo。自定义控件,实现了对ScrollView上拉下拉操作的实现。该demo参考了http://blog.csdn.net/nono_love_lilith/article/details/7100845 ,感谢Nono_Love_Lilith的帮助
Android 最简单的scrollView
自定义简单的scrollView 支持回弹
Android双向滚动ScrollView
由ScrollView和HorizontalScrollView整合的一个可以任意方向滚动的ScrollView
Android scrollview嵌套listview
Android中scrollview嵌套listview,解决嵌套冲突问题
Android ScrollView反弹效果
本Demo自定义了ScrollView控件,来实现上、下拉的反弹效果,提高了用户体验。
Android ScrollView嵌套TabLayout+ViewPager
亲测成功,可以直接嵌套项目中 ScrollView嵌套TabLayout+ViewPager解决滑动冲突,已进行重点标注 ViewPager会根据frament的界面高度进行展示,进行framnet的高度测量 嵌套冲突已全部解决
android scrollview 滑动指定位置
android scrollview 滑动指定位置,要点赞支持呦
android ScrollView截图涂鸦
android 利用ScrollView截图和涂鸦。效果很不错。
android scrollview嵌套listview
scrollview嵌套listview常见的问题,以及如何修改。适用的场景都做了说明。具体可以查看我的博客。
android下拉刷新scrollview
android 下拉刷新的scrollview完美例子,注意:1.自定义view内部必须是scrollview或者listview,2.我把显示时间的组件可见性可谓gone了,如果需要显示的话在布局文件中设置可见就行
android ListView和ScrollView事件冲突
android ListView和ScrollView事件冲突的解决方法
Android中的ScrollView及表格布局
scrollview 表格布局
android 卷轴视图(ScrollView)
NULL 博文链接:https://byandby.iteye.com/blog/816338
Android 学习(17)ScrollView
自学 Android 做的第十六个 Android 程序,使用了 ScrollView
android Gallery与ScrollView
Gallery与ScrollView的上下左右滑动图片浏览,下标点击
android scrollview 下拉刷新
android scrollview 下拉刷新
android:ScrollView滑动冲突问题
在ViewGroup中有个方法叫requestDisallowInterceptTouchEvent(boolean disallowIntercept),这个方法可以用来控制该ViewGroup是否截断点击事件。 mMapView.getChildAt(0).setOnTouchListener(new View.OnTouchListener() { ...
android scrollview惯性滚动
在使用android手机scrollview的时候,会出现惯性滚动的情况,就是用手指飞快的往上或者往下滑动一下,scrollview会滚动很久,所以如果使用scrollview的touch事件中的ACTION_UP似乎是监听不到滚动条停止滚动的事件。我想问下,这个滚动停止事件怎么监听到呢?
Android ScrollView 嵌套解决方案
Android ScrollView 嵌套解决方案 自定义View控件
android 可回弹ScrollView
仿IOS可回弹ScrollView
Android ScrollView自动滑动
Android ScrollView自动滑动
android ScrollView嵌套demo
ScrollView完美嵌套demo,解决两个ScrollView嵌套的滑动问题
Android 频道管理实现原理
这篇文章主要介绍一下Android的频道管理 频道管理非常的常见 像一下新闻类的APP大部分都有用到频道管理,今天写了个简单的demo介绍一下频道管理的实用. 1.首先肯定是依赖 一个是Project的依赖:在allprojects加maven {url “https://jitpack.io”} 一个是当前Module的依赖 2.布局用tablayout+Vp实现 3.设置两个集合 用来存...
Android中SharedPreferences的实现原理
循序渐进的讲解Android中SharedPreferences的实现原理。包括<span>SharedPreferences实例的获取、数据的获取、数据的保存流程</span>
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数