在我的应用程序创建一个画布,并添加一些关于它的位图。 问题是,对象被添加,为什么触摸屏幕。 因此,在一个屏幕上显示的不同的同一中间,但它们在像素位置是不同的。
我的意思是,我得到了平板电脑和智能手机。 当我触摸一个对象出现在两个设备上(多人),但它不是在同一个地方,因为它使由x和y位置。
如果有人明白我的意思,你能帮帮我吗? 大概就必须同时具有计数的比例共同的东西。
在我的应用程序创建一个画布,并添加一些关于它的位图。 问题是,对象被添加,为什么触摸屏幕。 因此,在一个屏幕上显示的不同的同一中间,但它们在像素位置是不同的。
我的意思是,我得到了平板电脑和智能手机。 当我触摸一个对象出现在两个设备上(多人),但它不是在同一个地方,因为它使由x和y位置。
如果有人明白我的意思,你能帮帮我吗? 大概就必须同时具有计数的比例共同的东西。
我猜你所遇到的问题是,屏幕是不同的分辨率和你逝去的像素数据。 您将需要使用的DP值和发送之前转换DP像素值。 在接收设备则需要转换被送回的像素值DP中的指定设备上。 使用下面的转换方法。
转换DP至像素:
final float scale = getResources().getDisplayMetrics().density;
int pixelValue = (int) (DESIRED_DP_VALUE * scale + 0.5f);
转换像素DP:
final float scale = getResources().getDisplayMetrics().density;
int dpValue = (int) ((DESIRED_PIXEL_VALUE) - 0.5f / scale);
到getDisplayMetrics()的调用。密度是什么会给你根据当前设备上的刻度值。 将DP值意味着是密度独立的。
你是如何定义的指标? 如果您使用的像素,使用密度独立的解决方案:
public int GetDipsFromPixel(float pixels)
{
// Get the screen's density scale
final float scale = getResources().getDisplayMetrics().density;
// Convert the dps to pixels, based on density scale
return (int) (pixels * scale + 0.5f);
}
而在你的类中使用这样的:
textView.setHeight(GetDipsFromPixel(50));
这样TextView的的高度将是两个设备在相同的DPS,即使它们的分辨率是不同的。