ScrollView嵌套GridView需要处理的事件
来源:互联网 发布:oracle数据库使用手册 编辑:程序博客网 时间:2024/06/06 08:38
近期开发时,遇到一个头图下拉,从中间放大的实现,弃掉PullToRefresh,采用ScrollView嵌套GridView的布局。
但是踩到了好多坑,重写GridView中的OnMeasure方法就不用说了,关键是我需要监听滚到顶部以及底部,下拉放大头图进行数据刷新,拉上进行分页加载。
从整体来说,采用这种布局会出现,进入此界面会自动滚到GridView的位置,我说这也太智能了吧~但不是我要的效果,还是好好老实给我现实吧!我才用的方法是
gridViewForScrollView.setFocusable(false);加上这句代码,可避免上述情况发生,当然网上还有其他办法,在这就不一一列出了。
监听ScrollView的触摸事件:
scrollView.setOnTouchListener(new View.OnTouchListener() { private int lastY = 0; @Override public boolean onTouch(View v, MotionEvent event) { ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) img.getLayoutParams(); switch (event.getAction()) { case MotionEvent.ACTION_UP: //手指离开后恢复图片 if(mScaling==true){ final float w = img.getLayoutParams().width;// 图片当前宽度 if(metric.widthPixels!=w) { channeldata.clear(); initData(); } } mScaling = false; replyImage(); lastY = scrollView.getScrollY(); if(lastY == (linearLayout.getHeight() - scrollView.getHeight())){ //ToastUtils.showAtCenter(getApplicationContext(),"到达底部,加载更多数据",Toast.LENGTH_SHORT); loadingMore.setVisibility(View.VISIBLE); if(!isLoadMore==true) { initData(); } } break; case MotionEvent.ACTION_MOVE: if (!mScaling) { if (scrollView.getScrollY() == 0) { whiteContainer.setVisibility(View.VISIBLE); mFirstPosition = event.getY();// 滚动到顶部时记录位置,否则正常返回 } else { break; } } int distance = (int) ((event.getY() - mFirstPosition) * 0.6); // 滚动距离乘以一个系数 if (distance < 0) { // 当前位置比记录位置要小,正常返回 break; } // 处理放大 mScaling = true; lp.width = metric.widthPixels + distance; lp.height = (metric.widthPixels + distance) * 4 / 10; lp.leftMargin = -1*distance/2; Logger.d("wepp",lp.leftMargin+""); img.setLayoutParams(lp); return true; // 返回true表示已经完成触摸事件,不再处理 } return false; } });里面的代码中也有一部分图片处理方法。
先这样,有不理解的可以私信我~
1 0
- ScrollView嵌套GridView需要处理的事件
- ScrollView嵌套GridView的滚动事件解决
- (源码分析)ScrollView嵌套ListView/GridView的滑动事件处理
- ScrollView内嵌GridView的事件处理
- 【Android填坑系列】ScrollView嵌套GridView的处理
- Android的ScrollView下嵌套GridView显示不完全问题处理
- ScrollView嵌套GridView的解决办法
- ScrollView嵌套GridView的解决办法
- ScrollView嵌套GridView的解决办法
- ScrollView嵌套GridView的解决办法
- ScrollView嵌套GridView的情况
- ScrollView嵌套GridView的解决办法
- ScrollView嵌套GridView的解决办法
- ScrollView嵌套GridView的解决办法
- ScrollView嵌套GridView的解决办法
- PullScollToRefreshView scrollView GridView的嵌套
- ScrollView嵌套GridView的解决办法
- 处理ScrollView嵌套GridView显示不全问题
- Appium常用方法介绍
- ES5对象的的创建及属性状态维护分析
- Android应用集成百度定位及导航
- Linux更新程序脚本
- Backbone入门基础 - 集合
- ScrollView嵌套GridView需要处理的事件
- children与childNodes的区别
- 建议119:不要使用自己的加密算法
- FMS 安装测试 自己进行
- 2016/9/7课上作业
- Idea中的快捷键
- XML解析
- 设计模式学习之路-观察者模式
- android通过shape实现虚线效果