Android中获取坐标方法

来源:互联网 发布:淘宝活动招商入口在哪 编辑:程序博客网 时间:2024/05/22 02:00

获取尺寸:

view.getWidth()
view.getHeight()

view.getMeasuredHeight();
view.getMeasuredWidth();

这两组方法的区别是:
getwidth和getmeasuredwidth的区别

其中第二组方法的一般使用方式是:

    DisplayMetrics dm = new DisplayMetrics();    context.getWindowManager().getDefaultDisplay().getMetrics(dm);    int screenWidth = dm.widthPixels;   //屏幕宽度    int screenHeight = dm.heightPixels; //屏幕高度    int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);     int h = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);     tv.measure(w, h);     int tvHeight = toTv.getMeasuredHeight();    //控件高度    int tvWidth = toTv.getMeasuredWidth();      //控件宽度

这样使用的目的是为了防止获取不到值的情况:如果页面在布局过程中调用了getMeasuredWidth(),获取到的值可能为0

获取位置:

view.getLocationOnScreen(screenLocationArgs);
view.getLocationInWindow(windowLocationArgs);
View.getLocationInWindow()和 View.getLocationOnScreen()在window占据全部screen时,返回值相同,不同的典型情况是在Dialog中时。当Dialog出现在屏幕中间时,View.getLocationOnScreen()取得的值要比View.getLocationInWindow()取得的值要大,因为此时的Window指的是diaolog,小于屏幕。

view.getX();
view.getY();
getX和getY获取到的值为相对于父视图而言的两个左边缘和上边缘的距离。

view.getLeft();
view.getTop();
view.getRight();
view.getBottom();
这四个方法所获取到的各个左上右下的值与layout的四个参数代表的是一样的,都是相对父视图的左边缘与上边缘。

view.scrollTo(x,y) 以该view当前的位置为(0,0)坐标,当x=0且y=0时,该方法不会产生任何效果。x>0表示向左移动,y>0表示向上移动。此处的移动指的不是view移动,而是view的Content移动,例如如果view是一个TextView,则Content是指其内的文字,如果view是一个listView,则Content是指其子项。view本身的大小和位置都不变,如果Content已经移动出view,则移出的部分不可见。
view.scrollBy(x,y) 原理和上述方法相同,方式不同,view.scrollTo(x,y) 是指移动到,该方法是指移动的偏移量,x代表横向移动的距离,y代表纵向移动的距离

MotionEvent的坐标
event.getRowX():触摸点相对于其所在组件原点的x坐标
event.getX(): 触摸点相对于屏幕原点的x坐标

0 0