1. final int[] location = new int[2];
  2. view.getLocationOnScreen(location);
  1. final int[] location = new int[2];
  2. view.getLocationOnScreen(location);

这样就可以得到该视图在全局坐标系中的x,y值,(注意这个值是要从屏幕顶端算起,也就是索包括了通知栏的高度)//获取在当前屏幕内的绝对坐标

  1. location[0] x坐标
  2. location[1] y坐标
  1. location[0] x坐标
  2. location[1] y坐标

应用 ,我们可以用来记录上一次listview滚动到了那里

首先我们需要一个记录当前滚动位置的全局变量:

  1. private float OldListY = -1;
  1. private float OldListY = -1;

然后在 listView 的 onItemClick() 或 onItemLongClick() 事件中获取 OldListY:

  1. lstView.setOnItemClickListener(new OnItemClickListener()
  2. {
  3. public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)
  4. {
  5. int Pos[] = { -1, -1 };  //保存当前坐标的数组
  6. arg1.getLocationOnScreen(Pos);  //获取选中的 Item 在屏幕中的位置,以左上角为原点 (0, 0)
  7. OldListY = (float) Pos[1];  //我们只取 Y 坐标就行了
  8. }
  9. });
  1. lstView.setOnItemClickListener(new OnItemClickListener()
  2. {
  3. public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)
  4. {
  5. int Pos[] = { -1, -1 };  //保存当前坐标的数组
  6. arg1.getLocationOnScreen(Pos);  //获取选中的 Item 在屏幕中的位置,以左上角为原点 (0, 0)
  7. OldListY = (float) Pos[1];  //我们只取 Y 坐标就行了
  8. }
  9. });

最后要做的就是在 setAdapter() 后恢复先前的位置:

  1. ...
  2. lstView.setAdapter(adapter); // 重新绑定Adapter
  3. lstView.setSelectionFromTop(index, (int) OldListY); // 恢复刚才的位置

android 中获取当前焦点所在屏幕中的位置 view.getLocationOnScreen(location)的更多相关文章

  1. android 获取屏幕的高度和宽度、获取控件在屏幕中的位置、获取屏幕中控件的高度和宽度

    (一)获取屏幕的高度和宽度 有两种方法: 方法1: WindowManager wm = (WindowManager) getContext().getSystemService(Context.W ...

  2. WPF中获取鼠标相对于屏幕的位置

    原文:WPF中获取鼠标相对于屏幕的位置 WPF中获取鼠标相对于屏幕的位置                                   周银辉WPF编程时,我们经常使用Mouse.GetPosi ...

  3. Html5 中获取镜像图像 - 解决 WebGL 中纹理倒置问题

    Html5 中获取镜像图像 - 解决 WebGL 中纹理倒置问题 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致& ...

  4. js 获取当前焦点所在的元素、给元素和input控件添加键盘监听事件、添加页面级的键盘监听事件

    页面级的键盘监听事件 document.onkeydown = function (event) { var e = event || window.event || arguments.callee ...

  5. 获取Delphi焦点所在的控件及通过控件名称访问控件

    方法一: Var I: Integer; Begin For I := To ComponentCount - Do //获取组件数量 Begin If Components[I] Is TWinCo ...

  6. 在WPF的MVVM框架中获取下拉选择列表中的选中项

    文章概述: 本演示介绍怎样在WPF的MVVM框架中.通过数据绑定的方式获取下拉列表中的选中项.程序执行后的效果例如以下图所看到的: 相关下载(代码.屏幕录像):http://pan.baidu.com ...

  7. java中获取接口(方法)中的参数名字(eclipse设置编译参数)(java8 javac -parameters)

    interface接口参数 jdk1.7及以前使用spring功能实现的: 注意: 1.该功能只能获取类的方法的参数名,不能获取接口的方法的参数名. public static void test() ...

  8. 【2017-06-27】Js中获取地址栏参数、Js中字符串截取

    一.Js中获取地址栏参数 //从地址栏获取想要的参数 function GetQueryString(name) { var reg = new RegExp("(^|&)" ...

  9. ASP.NET 4.0 ListView等容器控件中获取ClientID值与HTML中自动生成ID字符串不一样问题。

    ASP.NET 4.0 中 ClientIDMode的属性 可以设置获取不同ID格式的值. 项目中遇到的问题: 1.ListView1 ItemDataBound事件中,获取ClientID结果与自动 ...

随机推荐

  1. 在SOUI中非半透明窗口如何实现圆角窗口?

    如果SOUI的宿主窗口没有包含子窗口,直接使用窗口的半透明属性:translucent=1就可以解决了,整个窗口形状完全由背景图决定,可以实现完美的圆角. 然后窗口半透明时,窗口中的子窗口(非SWin ...

  2. apache配置多个版本php

    参看链接:http://my.oschina.net/u/2366984/blog/543148?p={{page}} 主要虚拟主机配置信息 FcgidInitialEnv PHPRC "D ...

  3. js 一些容易错的点

    最近在做平台相关功能,需要和js.html.以及使用bootstrap,bootstrap元素大小的设置 是比较难的. js比较容易出错的是,解析json,对象最好是使用json,这样更好解析,arr ...

  4. android--handler

    app在启动时会产生一个进程和一个线程,线程是主线程,又叫UI线程,更新UI元素必须要在UI线程中更新,否则会报错. 在UI线程中有消息队列,子线程sendMessage到MQ中,looper类取出队 ...

  5. 服务器响应HTTP的类型ContentType大全

    ".*"="application/octet-stream" ".001"="application/x-001" & ...

  6. Django分析之国际化处理

    最近在公司终于开始做web开发了,本以为会是简单的首页之类的小规模项目,结果上来就是一个处理大数据分析的项目,一个关于油品分析的系统,不过我接到的第一个任务是做这个网站的国际化处理,虽然项目还没有上线 ...

  7. 一个叫vtysh的命令行shell

    目前的工作就是在这个叫vtysh的工具上进行修改,终极目的是把它作为一个代替shell的东西.以此来屏蔽用户和系统之间的接触,减少用户对系统的操作权限.

  8. Node.js的学习路线

    http://www.admin10000.com/document/4624.html 顺便关注一下博客:http://blog.fens.me/series-nodejs/ php socket框 ...

  9. Android-Sqlite数据库的操作

    Sqlite数据库的简单操作: 设置增删改查的按钮,xml界面布局设置 <?xml version="1.0" encoding="utf-8"?> ...

  10. PHP连接数据库的方法

    mysql可通过两种方式通过PHP和web相连,一种通过php的mysql相关函数,另一种通过php的ODBC相关函数. 相关函数如下: MYSQL函数 mysql_affected_rows: 得到 ...