您的位置:首页 > 移动开发 > Android开发

【Android】控件与屏幕的位置、坐标、大小

2016-08-30 11:31 267 查看
一、控件

获得控件的宽、高:getWidth(),getHeight()。每次刷新有可能不一样。

真实宽高:xxx.getLayoutParams().height。 固定值,比较准确。

获得控件左边相对于父视图坐标原点(左上角)的距离:getLeft();(其他类似) 以左右为X轴,上下为Y轴

getRight()=getLeft()+getWidth().getBottom()=getTop()+getHeight()

设置控件大小:layout(int left, int top, int right, int bottom);

注意:必须在绘制完成后才能获取布局、控件的宽高!否则会为0或者负数。

解决方法:监听绘制事件

ViewTreeObserver vto = controlLayout.getViewTreeObserver();

vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

@Override

public void onGlobalLayout() {

controlLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this);

int controlLayoutWidth=controlLayout.getWidth();

Log.i("menu", "controlLayoutWidth:"+controlLayoutWidth);

mPathMenuLayout.setChildSize(controlLayoutWidth);

}

});

二、屏幕

DisplayMetrics dm = new DisplayMetrics();

window.getWindowManager().getDefaultDisplay().getMetrics(dm); // 取得窗口属性

获得屏幕的宽度:dm.widthPixels; // 窗口的宽度(以像素计算)

获得屏幕的高度:dm.heightPixels; // 窗口的宽度

获得标题栏的高度:window.findViewById(Window.ID_ANDROID_CONTENT).getTop();

三、触摸事件

以屏幕左上角为坐标原点,获得当前触摸的坐标:event.getRawX()、event.getRawY()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: