我有一个视图,在viewpager里面有图像。当我触摸视图时,我会显示一个我正在触摸的图像。 同时我在Firebase中发送X和Y位置。 在另一台设备中,我找回那些坐标并在这些坐标处显示图像。
但平板电脑的屏幕尺寸不同,如何在同一位置显示我的图像?因为如果我触摸第一个平板电脑的中间屏幕,它会在另一个平板电脑的右下方显示图像
更新
对于用户1,当他触摸视图时,指针/光标正在显示
v.animate()
.x(Math.round(event.getX()))
.y(Math.round(event.getY()))
.setDuration(0)
.start();
同时他将坐标发送到Firebase以及屏幕的宽度和高度。
Display display = getActivity().getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
Map<String, Object> map = new HashMap<>();
map.put("x", Math.round(event.getX()));
map.put("y", Math.round(event.getY()));
map.put("sizeX", width);
map.put("sizeY", height);
mRefMyPos.updateChildren(map);
用户2有一个监听器并获取这些数据以在坐标处显示imageView。
listenerRefCoordonate = mRefCoordonate.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
CoordonateModel coordinateModel = dataSnapshot.getValue(CoordonateModel.class);
if (coordinateModel == null){
//do something
mImageView.setVisibility(View.GONE);
} else {
final Float mScale = Math.min(1.0f * width / coordinateModel.getSizeX(), 1.0f * height / coordinateModel.getSizeY());
if (coordinateModel.getX() != null){
mImageView.setVisibility(View.VISIBLE);
mImageView.animate()
.x(Math.round(coordinateModel.getX() * mScale))
.y(Math.round(coordinateModel.getY() * mScale))
.setDuration(0)
.start();
}
}
}
@Override
public void onCancelled(DatabaseError firebaseError) {
}
});
似乎是不正确的,例如,如果我有一个带有ABCDEFGHI的图像视图....(match_parent),如果我尝试显示C,它在另一台设备上显示E.也许我的规模不正确?
我试着测试比例是否正确。当我触摸屏幕时没有显示我正在触摸的图像视图,但我正在聆听我在FireBase上写的内容并显示带有坐标/屏幕设备高度的图像视图并执行比例和时间我正在显示图像视图,显示我在哪里触摸,所以我猜比例是正确的
我会尝试重新解释我的问题:
平板电脑n1,1024 / 768 平板电脑n2,1920 / 1200
两者都在视图full_screen上,具有相同的Imageview比例FitXY和match_parent 在第一块平板电脑上,我触摸了猪的尾巴(Imageview),我发送了触摸屏幕的X,Y位置(Math.round(event.getX(),Math.round(事件)。 getY())和平板电脑的宽度/高度屏幕大小。第二个平板电脑显示(光标)在猪的尾巴周围但不在确切的位置....
有人可以帮助我吗?
用户平板电脑2收听用户1正在触摸的X,Y位置和绘图(红点)
更新2
我改变了,我在这篇文章中计算得像这样一个stackoverflow.com/a/21588683/5845928我有你所说的:平板电脑1点(258,230)和平板电脑2(484,359)。问题似乎是imageview。我该如何解决?
**固定**
平板电脑2接收平板电脑1的x,y位置,宽度和高度。
hisWidth = coordinateModel.getSizeX();
hisHeight = coordinateModel.getSizeY();
float percent_width = Float.valueOf(coordinateModel.getX()) / hisWidth;
float percent_height = Float.valueOf(coordinateModel.getY()) / hisHeight;
float x = percent_width * mWidth;
float y = percent_height * mHeight;
答案 0 :(得分:1)
尝试发送设备宽度和高度,以便您可以使用它们来计算其他设备中的确切(X,Y)