Android的 - 取材于不同的设备(Android - Drawing on the diffe

2019-09-16 16:30发布

在我的应用程序创建一个画布,并添加一些关于它的位图。 问题是,对象被添加,为什么触摸屏幕。 因此,在一个屏幕上显示的不同的同一中间,但它们在像素位置是不同的。

我的意思是,我得到了平板电脑和智能手机。 当我触摸一个对象出现在两个设备上(多人),但它不是在同一个地方,因为它使由x和y位置。

如果有人明白我的意思,你能帮帮我吗? 大概就必须同时具有计数的比例共同的东西。

Answer 1:

我猜你所遇到的问题是,屏幕是不同的分辨率和你逝去的像素数据。 您将需要使用的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值意味着是密度独立的。



Answer 2:

你是如何定义的指标? 如果您使用的像素,使用密度独立的解决方案:

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,即使它们的分辨率是不同的。



文章来源: Android - Drawing on the different devices