我试图制作一个简单的应用程序,只是为了更好地了解如何在Android上使用Touch事件。现在,我的Activity只是将ImageView移动到屏幕上触摸的坐标(MotionEvent的坐标)。通过应用简单的技巧,可以将图像的新位置设置为由相对于图像位置(getX()
和getY()
)的触摸坐标组成的值,我可以设法做到这一点。在
DX 和 DY 变量是负责使触摸保持图像中恒存储此相对值。
现在,我想在Activity中放置2个ImageView,并且只有两个固定的ImageView,并且一旦用户将一个ImageView拖到另一个ImageView的中心上,这两个图像就会切换位置,但是要正确地做到这一点,我想获得真实的坐标图像中心。我评论了使它正常工作以显示问题的代码部分。正如您在创建视图时在
第一张图片中所 看到的那样(0, 0)
,无论位于何处,图像坐标都是简单的(只要将初始位置定义为布局参数,如CENTER_IN_PARENT
)。
正如您在 第二张图片中 所看到的getX()
以及我观察到的ImageView
getY()
一样,当图像位于左上角时,返回的坐标就好像图像的左上角在DISPLAY的左上角一样。活动窗口。
我想了解为什么会发生这种情况,以及是否有人知道如何实际获取可以直接与MotionEvent的坐标进行比较的ImageView的坐标。
图片:
第一张照片
第二张照片
我仍然不知道为什么getX()
,getY()
,setX()
,并setY()
不能代表查看的屏幕上的位置,但我想通了,如何让屏幕上的视图对象的实际位置:getLocationOnScreen(coordinates)
。coordinates
2位置int数组(
int [2] )在哪里。
例如,要获取对应于ImageView左上角的实际值,image
我只需要执行以下操作:
int[] img_coordinates = new int[2];
ImageView image = (ImageView) findViewById(R.id.myImage);
image.getLocationOnScreen(img_coordinates);
然后,我实际上可以将这些坐标与Touch-event的getRawX
和进行比较getRawY
。
如果我想获得视图的中心点,我只需要这样做:
x_center = (double)img_coordinates[0] + image.getWidth()/2.0;
y_center = (double)img_coordinates[1] + image.getHeight()/2.0;
我希望这也会对其他人有所帮助,我花了一段时间找到了这种方法,实际上我不确定这是否是最好的方法,但是它对我有用。
我试图在Android活动中动态创建并移动图像。然而,setX()和setY()方法似乎无法正常工作。第一次创建和放置图像时,它会正确设置图像的位置,但任何更新图像的尝试都会导致图像放置在错误的位置。例如,图像在以下代码上移动: 在动作_MOVE时,即使x和y位置值保持不变,图像也会移动。图像的父对象保持不变。大小保持不变。如果我得到x和y值,它仍然会说206,但它不再位于活动的(206206)处
我正在尝试设置一个相对布局,屏幕顶部有一个工具栏,中央有一个listView。这是我的XML: 会不会是与TextView/ListView大小相关的问题?
我知道线性布局中的布局权重。我可以在相对布局中分配布局权重吗? 示例:布局中的两个图像视图以60:40的比例填充布局。第一个图像应占据整个屏幕高度的60%,第二个图像必须占据剩余的40%屏幕。 不要只是回答这个例子的问题,请告诉我准确的概念,或者张贴一些关于相对布局中布局权重的参考链接。提前感谢。
![我已经以线性布局(下面给出的代码)对其进行了编码,但想知道如何使用相对布局进行相同的操作,或者这只是一个考虑到布局的坏主意? 线性布局 - ][1] 使用相对布局时,我的ImageView不会显示在屏幕上:
本文向大家介绍相对布局和绝对布局,position:relative和obsolute。相关面试题,主要包含被问及相对布局和绝对布局,position:relative和obsolute。时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 相对定位relative: 如果对一个元素进行相对定位,它将出现在它所在的位置上。然后,可以通过设置垂直或水平位置,让这个元素“相对于”它的起点进行移动。
我使用DrawerLayout,最近我想改变抽屉布局中listView的重力。但是在我从将listView的重力更改为后,抽屉布局无法锁定 setDrawerLockMode()工作; ` 有什么线索可以解释为什么我不能在其他引力中使用锁定模式吗? 谢谢