int[] location = new  int[2] ;

view.getLocationInWindow(location);//获取在整个屏幕内的绝对坐标,注意这个值是要从屏幕顶端算起,也就是包括了通知栏的高度。
view.getLocationOnScreen(location);

其中 location[0]代表x坐标,location [1] 代表 坐标。
所以在需要确定组件在父窗体中的坐标时,使用 getLocationInWindow ,需要获得组件在整个屏幕的坐标时,使用 getLocationOnScreen。 这里要注意虽然getLocationOnScreen是获取组件在屏幕中的坐标,但如果我们想拿到这个坐标,并且在这个坐标附近再添加一个组件时,直接使用拿到的坐标来建立新的组件是达不到效果的。

View itemView = userManagerView.getListView().getChildAt(j);// 获取列表子项
int[] location = new int[2];
itemView.getLocationOnScreen(location);
ImageView image = new ImageView(getContext());

image.setBackgroundResource(R.drawable.operator);
if (GlobalData.loginState()) {
params = new AbsoluteLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT, location[0]-15, location[1] - 95);
} else {
params = new AbsoluteLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT, location[0]-15, location[1] - 25);
}
image.setLayoutParams(params);
在代码中,我想根据itemVIew的坐标来绘制一个新的ImageView控件,但如果整个界面没有父容器时,拿到的坐标是可以直接使用的,而当前界面上有父容器,或者有与其平行的界面时,坐标是有偏移的,所以我加上了有些判断处理,根据不同的布局,适当的调整下坐标的偏移量

if (GlobalData.loginState()) {
params = new AbsoluteLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT, location[0]-15, location[1] - 95);
} else {
params = new AbsoluteLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT, location[0]-15, location[1] - 25);
}

更多相关文章

  1. android定位和地图开发实例
  2. Android之屏幕方向改变以及onConfigurationChanged事件
  3. CommonsWare Android(安卓)Components
  4. 分析各种Android设备屏幕分辨率与适配 - 使用大量真实安卓设备采
  5. android屏幕页面实现滚动,页面跳转
  6. 一步一步学android之布局管理器——RelativeLayout
  7. Android(安卓)startService 启动自动解锁点亮屏幕
  8. android加载gif图片的动画库
  9. Android(安卓)截取手机屏幕两种实现方法

随机推荐

  1. Android(安卓)Studio和SDK的下载安装以及
  2. Android(安卓)Jni调用浅述
  3. Android(安卓)调起本地qq,发起临时会话
  4. android 多屏幕适配 : 第一部分
  5. android 面试(一)
  6. Android--获取SHA1的坑
  7. Android(安卓)8.0启动app崩溃
  8. Android(安卓)Device Monitor官方替代工
  9. [Android1.5]DigitalClock自定义日期输出
  10. Android动态部署三:如何从插件apk中启动Ac