Android基于GridView实现自定义上拉更多和下拉刷新.docVIP

Android基于GridView实现自定义上拉更多和下拉刷新.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Android基于GridView实现自定义上拉更多和下拉刷新

Android基于GridView实现自定义上拉更多和下拉刷新 GridView上拉更多和下拉刷新的原理分析: 1:要解决的问题: GridView和ListView不一样listView直接提供了addFootView和addHeadView两个方法,GridView是没有这两个方法的. 猜想解决方案:GridView既然是不能直接添加HeadView和FootView的那么可以借助于组合控件. 2:猜想产生的问题 如果借助于组合控件的话那么GridView的滑动和FootView的滑动是独立的,没有相关联(也就是说,GridView的滑动与否和FootVew本身没有任何的联系) 猜想解决方案:如果我们借助于,ScrollView来进行滑动的话那么在ScrollView的底部有了这个FootView的话那么是可以滑动的 3:猜想产生的问题 ScrollView和GridView不一样,ScrollView是不能直接给添加适配器的 猜想解决方案 使用ScrollView中嵌套一个布局不居中包括 GridView和一个底部的FootView 4:ScrollView中嵌套GridView的时候会造成显示不全的问题,需要解决ScrollView计算孩子高度的问题 解决方案:可以重写GridView中的onMeasure()方法,然后给定孩子高度的最大值,然后再设计一个测量的模式. protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expectHeight=MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE2,MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, heightMeasureSpec); } 5:需要解决什么时候滑动到了底部和顶部 解决方案:可以通过计算ScrollView孩子的高度,以及当前孩子滑动的顶部的相对的Y的偏移量 getScrollY和当前窗体的高度getHeight.如果getScrollY+getHeight=孩子的高度,说明滑动到底部了 6:解决问题:ScrollView知道了什么时候滑动到底部,如何将上级的状态 解决方案:直接通过回调的方法将状态在传递到上级页面 7:整合所有的对象 源代码如下: GridView public class MyGridView extends GridView { public MyGridView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public MyGridView(Context context) { super(context); } public MyGridView(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int heighMeasureSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, heighMeasureSpec); } } MyScrollView public class MyScrollView extends ScrollView{ private static final String LOAD=load; //表示的是加载数据的状态 private static final String REFRESH=refresh; //表示的是需要刷新页面的状态 public MyScrollView(Context context, AttributeSet attrs) { super(context, attrs); } interface ICallBack{ public void notifactionAbovePage(String tag); } ICallBack mICallBack=null; public void setOnCallBackLister(ICallBack mICallBack

文档评论(0)

cuotian + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档