什么是LayoutParams的X和Y坐标基于?

时间:2014-12-28 04:52:39

标签: android

我很抱歉再次发布此消息,我发布了一个几乎相同的问题,但也许它太长了,我没有回答。我会直截了当地提出这个问题
所以我制作了像Facebook的ChatHead这样的浮动图标,但我的X和Y坐标有些问题。我需要获得顶部,底部,左侧和右侧边缘的电话屏幕来解决问题。
我不能得到的是这些X和Y基于什么?我的笔记2屏幕是1280x720,但当我将头部移动到顶部和底部边缘时,我从日志中获得了这些随机数:

  12-28 11:41:49.471: D/COORDINATES X Y(9879): 73 -571 (Top)
  12-28 11:42:05.991: D/COORDINATES X Y(9879): 23 572 (Bottom)

(由于我的代码精度导致的值存在偏差,这是我上面提到的问题,但它只在1-5的范围内)
我尝试将2个绝对Y值相加,但结果不到1280这是我的屏幕分辨率所以现在我对此非常困惑?
希望有人可以帮助我,我花了好几个小时寻找这个,但仍然没有任何事情发生 更详细:这是头部的代码:( x = 0,y = 0,它出现在屏幕中央)

final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.TYPE_PHONE,
                WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
                PixelFormat.TRANSLUCENT);

        params.x = 0;
        params.y = 0;


        windowManager.addView(chatHead, params);
编辑:@Jason说我应该使用屏幕的尺寸(如果我的理解是正确的话,屏幕的宽度和高度)。但是我需要X和Y来移动头部并且它们不是基于屏幕的尺寸。 如果有人需要,这是完整代码的链接:http://www.piwai.info/chatheads-basics/

2 个答案:

答案 0 :(得分:2)

我遇到了类似的问题。我测试了我的应用程序WindowManager.LayoutParam.x和WindowManager.LayoutParam.y。 (我的手机是Galaxy 4S,最大尺寸是1920x1280)

我想出了答案。

基础值是首次加载时视图的“第一个位置值”的非常相对值。

答案 1 :(得分:1)

设置重力以及x和y坐标。 例如:

params.gravity = Gravity.TOP | Gravity.LEFT;
params.x = 860;
params.y = 0;

这会将视图移动到顶部中心附近..具体取决于您的屏幕尺寸。