以dp单位在画布上绘制“可绘制项”

8

我正在尝试找出一种方法,可以在画布上以dp单位而不是像素绘制位图。例如:以下代码将可绘制的缩放为100 * 100像素。我应该如何改变它以绘制100 * 100 dp?

int lengthPos = 10;
int heightPos = 10
mImage.setBounds(lengthPos, heightPos, (lengthPos + 100), (heightPos + 100));
mImage.draw(c);

此外,我不确定屏幕点击的度量单位是什么,但它们与屏幕上的像素不匹配,这使得很难检测到可绘制对象已被选中(你必须猜测在哪里点击才能选择可绘制对象)。我是否可以将点击坐标缩放到dp?这似乎并不太难,特别是因为屏幕点击坐标存储在本地变量中以便在我的应用程序中进行处理。
换句话说,我需要匹配缩放,以便在多个屏幕密度上,点击坐标250、250可以选择绘制在250、250处的像素。
3个回答

8

7
float dps = 100;
float pxs = dps * getResources().getDisplayMetrics().density;

Source (@Romain Guy)


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接