【问题标题】:How to Make hardcoded (x,y) coordinates generic for different screens?如何使不同屏幕的硬编码(x,y)坐标通用?
【发布时间】:2015-07-21 15:35:20
【问题描述】:

我有一个 width = 500dpiheight = 600dpi 的自定义视图,我在 (x = 230 ,y = 300) 上画了一个点,两者都取自 MotionEvent.getX() , MotionEvent.getY() ,在自定义视图的 onTouchEvent() 内.这个坐标实际上是在自定义视图的画布上绘制的一个点。

现在我怎样才能使这个坐标对不同的屏幕通用。这样我就可以存储(x = 230 ,y = 300)这些点并在将来在不同的屏幕上再次使用它们?

【问题讨论】:

  • 如果您只是想存储这些积分,以便在应用关闭后您可以再次使用下一次,您可以使用 SharedPreferences
  • 我知道如何存储它们,我想让它们通用多个屏幕。

标签: java android android-layout screen android-custom-view


【解决方案1】:

您可以通过将坐标存储为比率来实现。

首先,你得到视图的宽度和高度:

int viewWidth = view.getWidth();   // ex. 500dpi in your explanation
int viewHeight = view.getHeight(); // ex. 600dpi in your explanation

其次,将x-y坐标转换为屏幕左上角的比例:

double pointX = (double) MotionEvent.getX() / viewWidth;
double pointY = (double) MotionEvent.getY() / viewHeight;

然后,存储这些 pointXpointY

【讨论】:

  • viewWidth ,自定义视图的 viewHeight ,我无法在主要活动中获取它们。
  • @Bad Computer 这些值不是 Android API 的真实名称。例如,在您的解释中它们是 500(视图的宽度)和 600(视图的高度)。
  • 能否举例说明你的答案?我似乎无法正确理解。
  • 我明白你在说什么,X = (x , 500)*screenWidth , Y = (y , 600) * screenHeight 对吗? , 它不工作 !!
  • 屏幕尺寸在哪里? ,我的主要问题是为多个屏幕存储点!得到比率后,正如我上面已经提到的,我无法在与我以前的设备上相同的位置显示该点!
猜你喜欢
  • 2017-08-09
  • 2015-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-10
  • 1970-01-01
相关资源
最近更新 更多