android ScrollView实现原理,求助!

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

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

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.}

1
u011404046
名字随便取吧 这是什么?我问的是源代码里的问题···
5 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Android中自定义ScrollView的滑动监听事件
最近写项目,需要有个功能使用到监听ScrollView的滑动事件,我自己没有定义出来,我在网上找了一个例子,然后自己做了修改,上传到这,希望能和大家交流学习
Android ScrollView嵌套TabLayout+ViewPager
亲测成功,可以直接嵌套项目中 ScrollView嵌套TabLayout+ViewPager解决滑动冲突,已进行重点标注 ViewPager会根据frament的界面高度进行展示,进行framnet的高度测量 嵌套冲突已全部解决
ScrollView 实现下拉刷新
很多静态页面需要的刷新然后没有不要动页面 可以同个这一个demo 实现。。希望有用到的朋友可以下载下来研究研究,Scollview单独页面下拉刷新
android ScrollView弹性控件,横向和纵向滑动
和网络上的ReboundScrollView类似,但是没有那些滑动BUG,并且有横向弹性滑动
Android5.0SwipeRefreshLayout控件自带下拉刷新,自动刷新,scrollview
Android5.0SwipeRefreshLayout控件自带下拉刷新,自动刷新,scrollview,Android新控件效果很好,也很好用,仿饿了么boss直聘中的下拉刷新。zip
【Android】Android开发实现带有反弹效果,仿IOS反弹scrollview详解教程
博文介绍:http://blog.csdn.net/qq_21376985/article/details/52468306 【Android】Android开发实现带有反弹效果,仿IOS反弹scrollview详解教程
感觉比xListview、xScrollView好用的一个上拉加载,下拉刷新demo
感觉比xListview、xScrollView好用的一个上拉加载,下拉刷新demo。 因为这个demo是可以针对多种子view,一个控件就可以搞定多个布局的刷新加载功能,不像xList等等,都需要对应的搞一套。(个人观点,大家可以无视,这里不是说xList什么什么的,只谈的个人感觉)
解决scrollview嵌套listview显示不全的四种方法
重新测量listview高度,或者自定义listview
ScrollView增加标题控制显示和隐藏
ScrollView增加标题控制显示和隐藏
实现ScrollView滑动时标题栏的隐藏效果(我自己写了例子)
想把最近做项目学会的东西整理一下,项目中有一个要求,就是实现ScrollView滑动时标题栏的隐藏效果,整体效果是ScrollView从头往下滑动的时候慢慢的隐藏标题栏的效果
Android中自定义ScrollView的滑动监听事件,并在滑动时渐变标题栏背景颜色
最近写项目,有一个功能是要用到ScrollView的滑动监听事件,自定义了之后,还是不够用,于是我又在网上找了一些资料,修改了一下,现在上传到这,和大家分享学习
Android ScrollView向上滑动控件顶部悬浮效果实现
Android ScrollView向上滑动控件顶部悬浮效果实现,请参考文章:http://blog.csdn.net/viviwen123/article/details/39669811
Scrollview中嵌套ViewPager和ListView常出现的问题
Scrollview中嵌套ViewPager和ListView常出现的问题: ViewPager如果在Scrollview中使用,并且宽高指定为match_parent或者wrap_content则不会显示内容,但是如果将高度指定为200dp,则ViewPager则会将内容显示到屏幕上 ListView同ViewPager类似,必须指定固定高度之后,才可以显示相应的高度,否则只显示一个Item的内容高度,然后在ListView区域上下滑动时,Scrollview并没有效果,而是实现的是ListView的上下滚动事件。
android ScrollView,ListView 截屏并保存到图库
android ScrollView,ListView 截屏并保存到图库
解决Scrollview嵌套listview下拉刷新的一些问题
解决Scrollview嵌套listview下拉刷新的一些问题
自定义ScrollView与ListView结合使用
解决ScrollView嵌套ListView显示不全及其他BUG问题;自定义ScrollView及自定义ListView
ScrollView缓慢滚动到指定位置的标准自定义
ScrollView缓慢滚动到指定位置的标准自定义 解决ScollView中scrollTo()的生硬感!
优化无限循环滚动的ScrollView
简单几句代码就可以集成无限滚动的ScrollView。 通过新的方式去实现无限滚动功能,模式采用类似UITableView的机制,在代理中给你的滚动view赋值,只要是UIView都可以,不需要一定是UIImageView。 摒弃了普通思路在didScroll这个代理里面去翻页,优化了翻页的算法,手动滑动过程中自动滑动和手动滑动不相互影响。
027_android UI 组件 之ScrollView与底部动态添加数据
027_android UI 组件 之ScrollView与底部动态添加数据,很细致的视频教程,这个可以学哦。。
ScrollView实现图片拉伸效果,仿QQ好友动态头部效果
ScrollView实现图片拉伸效果,仿QQ好友动态头部效果,头部图片拉伸放大效果
Android ScrollView嵌套ListView嵌套GridView的上下拉以及加载更多
Android ScrollView嵌套ListView嵌套GridView的上下拉以及加载更多
Scrollview和gridview同时使用时滑动解决方法
Scrollview和gridview同时使用的时候,Scrollview滑动gridview不滑动,Gridview滑动Scrollview不滑动!
Scrollview滑动,并且单个页面也实现放大缩小,滑回来可还原
Scrollview滑动,并且单个页面也实现放大缩小,滑动到下一个page时在划回来,可还原,额外,双击屏幕,也可以实现放大
scrollview 嵌套recyclerview 显示不全.zip
scrollview 嵌套recyclerview 显示不全.zip scrollview 嵌套recyclerview 显示不全.zip
ScrollView+TabLayout+ViewPager+RecyclerView 嵌套实现布局
手动实现仿京东发现页面效果,使用布局嵌套完成,包括ScrollView+TabLayout+ViewPager+RecyclerView,最后有遗留问题需要处理。详情见博客https://blog.csdn.net/hq942845204/article/details/88844272
Android View scroll 翻页示例代码
Android View滚动的demo,初学可以看看哦
scollview包裹,进入界面指定滚动到某个控件显示
进入界面,scollview滚动显示某个界面,自己项目中需求就写了个简单demo
Android TabHost+ScrollView实现项卡切换+下拉显示头部效果 源码
一个帮你实现选项卡切换+下拉显示头部等效果的布局。
scrollView实现回弹阻尼效果(无bug)
网上找了很多android ScrollView回弹阻尼效果的源码demo,发现都有bug,本人整理了一个demo,实际测试无bug,欢迎下载。
android自动化小工具实现原理流程图
android自动化小工具实现原理流程图android自动化小工具实现原理流程图android自动化小工具实现原理流程图android自动化小工具实现原理流程图
Android自定义带有粘性的Scrollview
具有粘性的Scrollview的Android Studio Demo。
Android仿小米商城商品详情界面UI,ScrollView嵌套ScrollView、WebView、ListView
Android仿小米商城商品详情界面UI,ScrollView嵌套ScrollView/WebView/ListView
android完美解决listView与ScrollView滑动冲突
完美解决listView嵌套scrollView的滑动冲突问题
SwipeRefreshLayout嵌套ScrollView包裹复杂头布局和RecyclerView
SwipeRefreshLayout嵌套ScrollView包裹复杂头布局和RecyclerView - Dear月的博客 - 博客频道 - CSDN.NET http://blog.csdn.net/github_36287370/article/details/52880164 的附件
Android使用自定义ListView+ScrollView实现股票界面上下左右滑动
最近公司做股票相关软件,界面需求是这样的,横向无限长,可以横向滚动,而且最左侧的那一竖栏要定住,网上找了写例子,都太复杂,这里来一个简单的。
让ScrollView头部的View实现伸缩动画效果
一款非常绚丽的ScrollView动画,让ScrollView的头部实现了伸缩动画效果
android ScrollView
android ScrollView
Android实现ScrollView顶部布局上滑缩小,下滑恢复
http://blog.csdn.net/yanjunhui2011/article/details/78274608 对应资源
Recycleview实现复杂页面三种以上布局 瀑布流多布局 scrollview嵌套recyclerView 显示不全滑动冲突
Recycleview实现复杂页面三种以上布局 瀑布流多布 scrollview嵌套recyclerView 显示不全滑动冲突
Android listview ,ScrollView 回到顶部的按钮
在有些listview上面和ScrollView上,当滑动到底部的时候,在右下角会出现一个回到顶部的按钮。代码里面对实现了上述的情况,请自己设置那个移动的高度值。
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 android手游开发视频 android区块链教程