- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试制作一个简单的应用程序,以便更好地了解如何在 Android 上使用触摸事件。现在,我的 Activity 只是将 ImageView 移动到屏幕上触摸的坐标(MotionEvent 的坐标)。我可以通过应用一个简单的技巧来将图像的新位置设置为一个值,该值由相对于图像位置的触摸坐标组成(getX()
和 getY()
). dx 和 dy 变量负责存储此相对值,以便触摸在图像中保持恒定。
现在我想在 Activity 中放置 2 个 ImageView,并且只有两个固定的 ImageView 位置,一旦用户将一个 ImageView 拖到另一个 ImageView 的中心,两个图像就会切换位置,但为了正确地做到这一点,我想得到图像中心的真实坐标。我评论了使其正常工作以显示问题的代码部分。正如您在创建 View 时在第一张图片中看到的那样,图像坐标只是(0, 0)
,无论它在哪里(只要初始position 定义为布局参数,如 CENTER_IN_PARENT
)。
正如您在第二张图片中看到的,据我观察,ImageView 的getX()
和getY()
返回坐标为当图像位于 Activity 窗口的左上角时,如果图像的左上角位于显示的左上角。
我想了解为什么会发生这种情况,如果有人知道如何实际获取可以直接与 MotionEvent 坐标进行比较的 ImageView 坐标。
图片:
最佳答案
我仍然不明白为什么要使用 getX()
、getY()
、setX()
和 setY( )
不代 TableView 在屏幕上的位置,但我想出了如何获取 View 对象在屏幕上的实际位置:getLocationOnScreen(coordinates)
。其中 coordinates
是一个 2 位整数数组 (int[2])。
例如,要获得对应于我的 ImageView image
左上角的实际值,我只需要执行如下操作:
int[] img_coordinates = new int[2];
ImageView image = (ImageView) findViewById(R.id.myImage);
image.getLocationOnScreen(img_coordinates);
然后我实际上可以将这些坐标与触摸事件的 getRawX
和 getRawY
进行比较。
如果我想获得我的观点的中心点,我只需要这样做:
x_center = (double)img_coordinates[0] + image.getWidth()/2.0;
y_center = (double)img_coordinates[1] + image.getHeight()/2.0;
我希望这也能帮助其他人,我花了一段时间才找到这种方法,实际上我不确定它是否是最好的方法,但它对我有用。
关于java - 为什么ImageView的getX、getY、setX、setY在RelativeLayout中不代表实际值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17411221/
我正在学习自己的 Flutter GetX 并坚持了一点。实际上我想知道为什么当我再次访问该页面/对话框时不会调用 GetX Controlled 的 onInit 方法。 假设我有一个简单的Text
当我发现自己多次调用同一个 getter 方法时,这应该被认为是一个问题吗? [总是] 分配给局部变量并只调用一次是否更好? 我确定答案当然是“视情况而定”。 我更关心更简单的情况,其中 getter
我可以使用 GetX 看到导航器堆栈吗?我查看了文档,但找不到有关此主题的任何内容。我通常会关闭例如这样的对话框 Get.until((route) => !Get.isDialogOpen); 但我
我想制作一个密码文本框,其中的内容可见性可以通过后缀图标来控制。 代码可能是这样的: import 'package:flutter/material.dart'; import 'package:g
我想使用 Get 包将多个数据从一个屏幕传递到另一个屏幕。 Get.to(Second(), arguments: ["First data", "Second data"]); 最佳答案 步骤:1
这是getX来自的vector.js var Vector = (function () { function Vector(pX, pY) { this.setX(pX);
让我们假设一个 ImageView,当它被添加到我的布局(相对布局)时,没有缩放(比例为 1)。如果我调用 getX(),它会返回正确的 X 位置。 但是,如果我现在用 2 调用 setScaleX(
我有一个这样的列表: List countries = [ Country(name: 'United States', border: ['Mexico', 'Canada']),
我正在为我的新项目尝试 GetX,并尝试使用受启发的 AnimationController this comment . Tween -> blur & spread & AnimationCont
应用程序一直卡在启动画面上的原因是什么?我使用 getx 状态管理。如果 authToken 不为空,它应该转到主页。但是 Controller 类中的 onInit 没有调用。 void main(
我隔离了一些繁重的计算,然后在接收到结果的列表时运行一个 for 循环以将它们添加到带有 items var items = [].obs;的可观察列表中; 问题是我正在尝试从启动 Controlle
我正在使用 Get.snackbar() 来显示连接到 API 的过程。我不明白如何以编程方式关闭 snackbar ?我有以下代码: @override Future getImportantD
我正在尝试在 ListView 中无限滚动。我正在从 API 获取数据。我正在使用 getx。我的 ListView 总是在滚动结束时重建。我找不到我做错的地方。 This is what i try
我使用 flutter 有一段时间了,最近使用 Get 来实现状态管理。 我在打开加载对话框 1 和消息对话框时遇到问题。然后我想关闭加载对话框,但消息对话框是保持关闭的对话框。 import '
我正在寻找如何在 GetX 的最佳实践中处理表单和验证的示例? 有没有很好的例子,或者有人可以向我展示我们如何最好地做到这一点的例子? 最佳答案 GetX 不是所有问题的解决方案,但它有一些实用方法可
我正在尝试将旧代码转换为新代码语法。我对 RxList 有疑问。 所以我改变了postModel.assign(postDetail); 但是在我的 news_detail 页面中我如何获取值(val
我想在单击图 block 时更改 ListTile 文本的颜色,我该怎么做,而且颜色应该只针对特定的选定图 block 更改。我的方法如下: ListView.builder( ite
在下面的代码中,为什么首先执行 getX() 方法而不是构造函数: public class ConsructorQuestion { int x = getX(); // same thi
我正在尝试将旧代码转换为新代码语法。我对 RxList 有疑问。 所以我改变了postModel.assign(postDetail); 但是在我的 news_detail 页面中我如何获取值(val
我想在单击图 block 时更改 ListTile 文本的颜色,我该怎么做,而且颜色应该只针对特定的选定图 block 更改。我的方法如下: ListView.builder( ite
我是一名优秀的程序员,十分优秀!