我的任务是允许用户上传图片并让用户在他点击的任何位置放置自定义视图。 (就像在Facebook上发布图片)通过获取触摸位置并动态地将视图添加到相对布局并设置leftMargin和topMargin,很简单。将视图置于同一个地方,适用于所有的Android设备
但我想要这个自定义组件在每个Android设备的'确切'相同的位置绘制。
例如;假设你上传了一张照片到你的个人资料中并给某人加标签,其他人使用不同的设备查看你的照片时,应该在与图片完全相同的地方看到标签。
我知道我也必须考虑屏幕密度,但不知道如何操作x,y。
看的示例屏幕截图: (蓝色盒由用户点击放)
这截图是从与屏幕密度1的试验装置,与密度1.5另一设备示出了处于不同位置的蓝色框。
(图片更新:)
这是一个测试代码:
icon = new ImageView(getActivity());
icon.setBackgroundColor(getResources().getColor(R.color.blue));
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(30, 40);
int density = this.getResources().getDisplayMetrics().density;
params.leftMargin = (int)(posX/density);
params.topMargin = (int)(posY/density);
是posX/Y int?如果是这样,在将它们转换为整数之前,尝试将它们和密度转换为浮点数。 –
这并没有真正改变。蓝色框出现在不同设备的不同位置 –