listview滑动到指定坐标位置
来源:互联网 发布:2016淘宝女装排行榜 编辑:程序博客网 时间:2024/04/26 00:30
我们都知道让listview滑动到指定的item位置有两个直接调用的方法setSelection(int position)和
smoothScrollToPosition(int position),第二个smooth方法是带平滑滑动动画的,看起来更顺滑一些,不过他要在线程中调用才能起作用。
他们两个共同的弊端就是只能滑动到某个item,不能指定滑动到某个固定的坐标位置,
在这里我们可以通过lv.smoothScrollBy(int distance, int duration)方法来解决这个弊端,
第一个参数distance是滑动的距离,正数是向上滑动,负数是向下滑动。
第二个参数duration是滑动的时间
知道调用smoothScrollBy需要传入滑动的距离,下边我们就来看一下滑动的距离怎么获取,在listview中我们通过实现OnScrollListener接口,在方法中
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,int totalItemCount) {
//获取滑动的高度
int scrollHeight = getScrollYs();
}
//用来记录每一个item的高度
private HashMap<Integer,Integer> itemHeight = new HashMap<>();
/**
* 获取ListView的ScrollY
* @return
*/
public int getScrollYs() {
View c = getChildAt(0);
if (c == null) {
return 0;
}
int firstVisiblePosition = getFirstVisiblePosition();
if (!itemHeight.containsKey(firstVisiblePosition)){
itemHeight.put(firstVisiblePosition,c.getHeight());
}
int top = c.getTop();
int height = 0;
Set<HashMap.Entry<Integer,Integer>> entry = itemHeight.entrySet();
for (HashMap.Entry<Integer,Integer> entrys: entry){
if (entrys.getKey()<firstVisiblePosition){
height += entrys.getValue();
}
}
return -top + height ;
}
这样获取到滑动的高度(- scrollY)- 需要到达的高度坐标(y)=需要滑动的距离distance。
注意:这里获取到的高度是取的正数,是加了“ - ”的,在计算距离的时候可以根据需要在scrollY 前 加上 “ - ”转换成真实头部坐标来计算距离。
只要了解了调用方法,使用起来还是比较简单的,相信看完的程序猿们应该都清楚怎么使用了。
阅读全文
0 0
- listview滑动到指定坐标位置
- android listview 滑动到指定位置
- Android ListView 滑动到指定item 定位 指定位置
- 点击滑动到指定位置
- RecyclerView滑动到指定位置
- RecyclerView 滑动到指定位置
- RecyclerView滑动到指定位置
- ListView滚动到指定位置
- RecyclerView滑动到指定位置,并指定位置在顶部
- RecyclerView滑动到指定位置的接口
- RecyclerView 平滑滑动到指定位置
- RecyclerView的滑动到指定位置
- 滚动条滑动到指定位置
- RecycleView置顶滑动到指定位置
- 滑动到点击位置的ListView
- Listview如何定位到指定位置
- NGUI 使guid滑动到指定的位置 【3.5有效】
- android scrollview 滑动到顶端或者指定位置
- radio,checkbox的重复点击实现
- Git 使用基础和示例
- 3398-数据结构实验之排序一:一趟快排
- Hibernate-增删改查
- java、python--差分隐私拉普拉斯分布(Laplace)实现
- listview滑动到指定坐标位置
- gdfzoj #786 很容易AC的题(AC自动机)
- Educational Codeforces Round 27- D Driving Test
- JavaScript中基本数据类型和引用数据类型的区别
- c#拷贝整个文件夹到指定文件夹下(非递归)
- Java-Java5.0注解解读
- ngrok内网穿透,ngrok服务器搭建,实现外网访问内网服务;树莓派外网访问内网的web服务及ssh外网登录
- 智能合约如何可信的与外部世界交互
- HTML表格