Android - 在不同设备上绘图

标签 android drawing android-canvas

在我的应用程序中,我创建了一个 Canvas 并在其上添加了一些位图。问题是对象正在添加为什么要触摸屏幕。因此,在一个屏幕上,它们出现在不同的中间,但它们的像素位置不同。

我的意思是我有平板电脑和智能手机。当我触摸一个对象时,该对象会出现在两个设备(多人游戏)上,但它不在同一个位置,因为它通过 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().denth 的调用将为您提供基于当前设备的比例值。 dp 值与密度无关。

关于Android - 在不同设备上绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10282151/

相关文章:

java - 如何递归画线

android - Google map 问题上的自定义标记

android canvas 绘制文本部分

Android复选框在更改前监听点击

java - 我应该从正在使用的主要 Activity 中访问 fragment 中的内容吗?

javascript - 在 Javascript 中绘制带箭头的直线

java - 在 Android Canvas 上绘图不起作用

java - Eclipse 删除了我的 3 个项目

android - 为Gradle插件定义的任务创建依赖项

Delphi绘制光滑的饼图