android获得当前view在屏幕中坐标的方法

本文实例讲述了android获得当前view在屏幕中坐标的方法。分享给大家供大家参考。具体如下:

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

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

//获取在当前屏幕内的绝对坐标 location[0] x坐标 location[1] y坐标

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

首先我们需要一个记录当前滚动位置的全局变量:
复制代码 代码如下:private float OldListY = -1;

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

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

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

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

希望本文所述对大家的Android程序设计有所帮助。

时间: 2024-10-25 11:28:10

android获得当前view在屏幕中坐标的方法的相关文章

android获得当前view在屏幕中坐标的方法_Android

本文实例讲述了android获得当前view在屏幕中坐标的方法.分享给大家供大家参考.具体如下: final int[] location = new int[2]; view.getLocationOnScreen(location); 这样就可以得到该视图在全局坐标系中的x,y值,(注意这个值是要从屏幕顶端算起,也就是说包括了通知栏的高度) //获取在当前屏幕内的绝对坐标 location[0] x坐标 location[1] y坐标 应用 ,我们可以用来记录上一次listview滚动到了那

不同Android版本设备正确获取屏幕分辨率的通用方法

不同Android版本设备正确获取屏幕分辨率的通用方法         谈到android屏幕分辨率,大家都知道,但是怎么正确的获取屏幕的分辨率呢?android2.2\2.3\4.0\4.1使用的方法一样吗?       答案是否定的.事物是发展变化的,android也不例外,android2.2.2.3因为标配是有触摸屏按钮的,也就是说触摸屏上BACK.HOME.MEAN是在触摸屏分辨率识别范围之外的.但是在android4.0以后,已经取消了,开始使用软件按钮了,在屏幕的下方会占掉一定的高

java获取鼠标在屏幕上坐标的方法_java

介绍 java作为目前最为流行的计算机开发语言之一,学习java是高薪就业的好选择,本文介绍的这个小工具主要是使用MouseInfo类实时获取鼠标的信息,然后再JDialog上显示出来.希望下面的内容介绍,能够让大家对于如何获取鼠标在屏幕上的坐标更加了解,一起来学习下吧. 代码如下: import java.awt.BorderLayout; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JD

三星S5屏幕出现坐标取消方法

1)在s5手机中我们点击"设置"按钮然后找到"更多"中的"开发者选项"如图所示. 2)然后我们在"开发者选项"界面会看到有一个"显示指针位置",把"显示指针位置"去掉,就可以解决这样的问题了!   小编提醒您,其实这个功能是android4+系统自带的一个功能了,所有手机取消坐标功能的方法都是一样的哦.  

Android开发中MotionEvent坐标获取方法分析_Android

本文实例讲述了Android开发中MotionEvent坐标获取方法.分享给大家供大家参考,具体如下: Android MotionEvent中getX()与getRawX()都是获取屏幕坐标(横),但二者又有区别getX()           :   是获取相对当前控件(View)的坐标 getRawX()   :   是获取相对显示屏幕左上角的坐标 演示示例代码 Java代码: public class MainActivity extends Activity implements On

Android在自定义View(SurfaceView)中实现进度条Progress

http://www.havenliu.com/java/689.html Android本身带有Progress控件.可以在布局中灵活使用,但如果是在自定义的View或者SurfaceView中使用,就需要自己实现,其实不难,只要熟悉了android的PorterDuff,就能利用PorterDuff的遮罩效果方便的实现进度条. PorterDuff.Mode的灵活使用可以实现很多强大的功能,比如以前比较流行的美女擦玻璃,在屏幕上用手指绘图或橡皮檫等功能. 下面是源码,老规矩,完整源码中文章末

控件坐标-.net 怎么获取控件在屏幕中的坐标

问题描述 .net 怎么获取控件在屏幕中的坐标 看网上用函数:Point p = Button2.PointToScreen(Button2.Location); 但是老是提示错误,我引用了using System.Drawing;using System.Windows.Forms;请问我少引用了什么吗?还是.net控件不支持PointToScreen这个函数? 解决方案 你这个代码是桌面程序的,不是asp.net的.asp.net只能获得相对文档的坐标,而不能获得相对屏幕的坐标,除非你在客户

求大神解答一下-android 在自定义view 中添加popwindow报错

问题描述 android 在自定义view 中添加popwindow报错 android 在自定义view中添加popuwindow报错 GC_CONCURRENT freed 内存问题. 求大神给解决方案 解决方案 Android的ScrollView中添加自定义View----------------------

android DialogInterface 和 View 中的OnClickListener冲突

问题描述 android DialogInterface 和 View 中的OnClickListener冲突 尝试用上边的解决办法,全路径引入,可是还是没有解决. 解决方案 在对话框按钮的点击事件前面加上DialogInterface ,即DialogInterface .onClickListener 解决方案二: 它们的冲突是可以用自己的命名空间区分的.就像楼上说的. 另外,onClickListener通常都是这样做, btn.setOnClickListener(new View.On