我有下一个问题:
我正在开发一个应用程序,当我移动imageView并放下它时,如果视图在屏幕的半高度下降到(X,Y)位置,如果超过半高屏幕,则转到另一个位置
我需要计算一般屏幕的一半,所以我使用下一个代码:
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
halfHeight = displaymetrics.heightPixels / 2;
这很有效,我在1920x1080的屏幕上尝试,代码返回540。 但是,当我去看看我是否放下视图是在下半部分还是上半部分时,这是我不明白的。我得到了视图的Y位置并且没问题,我不明白为什么Y = 0不在屏幕的顶部,如果我将视图移动到顶部,我得到负的Y位置,如-260。
有人能解释我为什么会这样吗? 我是否可以在屏幕的左上角开始(0,0)位置?
迎接,希望你理解
答案 0 :(得分:0)
如果你调用getX()或getY(),那么你得到的是x和y的相对值(相对于调用该调用的视图)。如果您致电getRawX()或getRawY(),它会为您提供相对于设备屏幕的视图的绝对位置。
您很可能获得负值-260,因为您将ImageView 260拖离进行调用的视图(可能是屏幕顶部的视图高度为260)。如果您尝试使用getX()或getY()来计算屏幕的中间部分,那么您必须考虑所有视图的所有大小,但我认为您要使用getRawX()和{{3} }
答案 1 :(得分:0)
0度的角度对应于0度的几何角度(手表的3点钟位置)。
尝试使用translate将坐标转换为屏幕顶部。
http://developer.android.com/reference/android/graphics/Canvas.html#translate(float,浮动)