Android 当手机尺寸改变时,视图的x和y坐标也会改变,因此视图被放置在不同的位置

Android 当手机尺寸改变时,视图的x和y坐标也会改变,因此视图被放置在不同的位置,android,Android,我通过将视图坐标转换为dp并存储它们来获取视图坐标。当一个视图放置在另一个密度手机的相同坐标处时,它会显示在不同的位置。 下面是获取textview的x和y位置的代码 int e1x = getdps((int)view.getX()); int e1y = getdps((int)view.getY()); int getdps(int dp) { float metrics = getApplicationContext().getResources().getDisplayMet

我通过将视图坐标转换为dp并存储它们来获取视图坐标。当一个视图放置在另一个密度手机的相同坐标处时,它会显示在不同的位置。
下面是获取textview的x和y位置的代码

int e1x = getdps((int)view.getX());
int e1y = getdps((int)view.getY());

int getdps(int dp) {
    float metrics = getApplicationContext().getResources().getDisplayMetrics().density;
    return (int) (metrics * dp+0.5f);
}

我被困在这里了。我希望视图在所有Android手机上显示在相同的位置。

X屏幕上的是
imageView.getX()

图像的真实x通过:

ratioOfWidth=imageView.getWidth()/imageView.getDrawable().getIntrinsicWidth()

real x=图像x*比值宽度

对于
real y
,同样的工作

使用
Paint app
检查是否与代码的x相同 在Paint应用程序中,当您移动鼠标时,可以看到底部状态x和y

第二种解决方案:

通过绘制计算您的设计比率

例如,我的宽度是100px,视图从50px开始

因此,视图的宽度为0.5

然后使用LinearLayout或PercentRelativeLayout或更好的ConstraintLayout


在Constraint Layout(约束布局)中,我将放置水平偏差。5

X在屏幕上是
imageView.getX()

图像的真实x通过:

ratioOfWidth=imageView.getWidth()/imageView.getDrawable().getIntrinsicWidth()

real x=图像x*比值宽度

对于
real y
,同样的工作

使用
Paint app
检查是否与代码的x相同 在Paint应用程序中,当您移动鼠标时,可以看到底部状态x和y

第二种解决方案:

通过绘制计算您的设计比率

例如,我的宽度是100px,视图从50px开始

因此,视图的宽度为0.5

然后使用LinearLayout或PercentRelativeLayout或更好的ConstraintLayout


在Constraint Layout(约束布局)中,我将放置水平偏移。5

您能给我更多关于所需结果的详细信息吗?就像您要设计的图像一样我将文本视图放置在图像上。存储x和y的坐标。当我在另一个高密度手机/不同尺寸手机上看到相同的图像时,textview的位置不同。事实上,我可以给你另一个解决方案,而不是x和y,但我需要一个最终设计的图像来给你精确的解决方案如果你想用x和y来解决它,你必须计算x和y,与getIntrinsicHeight的比例等等,这是一个复杂的解决方案如何获得缩放宽度?你能给我更多吗有关所需结果的详细信息?如您要设计的图像我在图像上放置文本视图。存储x和y坐标。当我在另一部高密度手机/不同尺寸手机上看到相同的图像时,textview的位置不同。事实上,我可以给你另一个解决方案,而不是x和y,但我需要一个最终设计的图像来给你精确的解决方案如果你想用x和y来解决它,你必须计算x和y,与getIntrinsicHeight比较,等等。这是一个复杂的解决方案如何获得缩放宽度?我试过了。我需要textview的坐标使textview没有getDrawable功能。@AASH检查我的第二个解决方案,否则我不知道抱歉,如果我帮不了你@AASHi尝试过它。我需要textview的坐标使textview没有getDrawable功能。@AASH检查我的第二个解决方案,否则我不知道抱歉,如果我帮不了你@AASH