如何获取recyclerview中子view的坐标
发布网友
发布时间:2022-05-01 18:11
我来回答
共2个回答
热心网友
时间:2022-06-20 23:04
witch (action) {
case MotionEvent.ACTION_DOWN:
DownX = event.getX();//float DownX
DownY = event.getY();//float DownY
currentMS = System.currentTimeMillis();//long currentMS 获取系统时间
break;
case MotionEvent.ACTION_MOVE:
float moveX = event.getX() - DownX;//X轴距离
float moveY = event.getY() - DownY;//y轴距离
long moveTime = System.currentTimeMillis() - currentMS搜索;//移动时间
break;
case MotionEvent.ACTION_UP:
break;
}
http://zhidao.baidu.com/question/626979396736661764.html
以上来自百度,不明的话,看下面原理自己做个:
滑动其实只是不停的重绘图像,造成滑动的效果。
滑动其实是处理手的触屏事件,在你的View里有onTouch事件,里面会有
MotionEvent对象,里面保存当前手的位置坐标,你根据这个坐标计算手滑动的距离,
一般是在收到ACTION_DOWN时保存按下的位置,然后ACTION_MOVE会不停的上报,
计算得出滑动距离
热心网友
时间:2022-06-20 23:04
获取 RecyclerView 的滑动距离:
滑动到一定程度后清零是因为 getChildAt(0) 获得的是第一个可见view 用LinearLayoutManager的recyclerview测试了一下确实如此。
如果LayoutManager用的是LinearLayoutManager 可以用下面的办法,还能向下滑动多少 * * @return */ private int getDistance() { LinearLayoutManager layoutManager = (LinearLayoutManager) getLayoutManager(); View firstVisibleItem = this.getChildAt(0); int firstItemPosition = layoutManager.findFirstVisibleItemPosition(); int itemCount = layoutManager.getItemCount(); int recyclerviewHeight = this.getHeight(); int itemHeight = firstVisibleItem.getHeight(); int firstItemBottom = layoutManager.getDecoratedBottom(firstVisibleItem); return (itemCount - firstItemPosition - 1) * itemHeight - recyclerviewHeight + firstItemBottom; }
已滑动的距离:
private int getScrolledDistance() { LinearLayoutManager layoutManager = (LinearLayoutManager) getLayoutManager(); View firstVisibleItem = this.getChildAt(0); int firstItemPosition = layoutManager.findFirstVisibleItemPosition(); int itemHeight = firstVisibleItem.getHeight(); int firstItemBottom = layoutManager.getDecoratedBottom(firstVisibleItem); return (firstItemPosition + 1) * itemHeight - firstItemBottom; }