OnClickListener 是否考虑了视图的比例因子?
Does an OnClickListener take into account the scaling factor of the view?
我有一个扩展 TableLayout
并包含 LinearLayout
行子项的 CustomLayout
视图,每个子项都包含一个 RelativeLayout
单元格(每个单独的单元格都有一个 OnClickListener
)。 CustomLayout
也有 ScaleGestureDetector
存在并支持 X/Y 轴上的 scrolling/dragging。当缩放因子为 1(无缩放)时一切正常。
问题 是每个单元格的 OnClickListener
似乎没有考虑 CustomLayout
的比例因子,随后,它是自己的单元格缩放。因此,如果缩放为 2 倍并且您点击了现在更大的单元格,那么您实际上点击了之前缩放级别的另一个较小单元格的触摸目标。
我不知道这是否是设计使然(我试图找到一些关于这个问题的文档,但没有找到任何东西)。任何 input/ideas 关于这件事?我知道总是有可能通过监听 CustomLayout
触摸事件并将触摸事件位置映射到现在缩放的 [=] 手动实现 ClickListener
35=] 单元格。但我想知道是否可以使用默认 OnClickListener
来获得更简单、更简洁的方法。
没关系。显然我是 scaling/translating canvas 而不是视图,所以我想布局子项无法考虑 canvas 已经移动是有道理的。
因此,要么 scale/translate 整个视图,而不仅仅是它的 canvas(但这会导致大量动画并丢弃 frames/jerkiness),或者 scale/translate 仅 scale/translate canvas(这提供了改进的性能)并手动管理所有触摸事件,例如点击。
我有一个扩展 TableLayout
并包含 LinearLayout
行子项的 CustomLayout
视图,每个子项都包含一个 RelativeLayout
单元格(每个单独的单元格都有一个 OnClickListener
)。 CustomLayout
也有 ScaleGestureDetector
存在并支持 X/Y 轴上的 scrolling/dragging。当缩放因子为 1(无缩放)时一切正常。
问题 是每个单元格的 OnClickListener
似乎没有考虑 CustomLayout
的比例因子,随后,它是自己的单元格缩放。因此,如果缩放为 2 倍并且您点击了现在更大的单元格,那么您实际上点击了之前缩放级别的另一个较小单元格的触摸目标。
我不知道这是否是设计使然(我试图找到一些关于这个问题的文档,但没有找到任何东西)。任何 input/ideas 关于这件事?我知道总是有可能通过监听 CustomLayout
触摸事件并将触摸事件位置映射到现在缩放的 [=] 手动实现 ClickListener
35=] 单元格。但我想知道是否可以使用默认 OnClickListener
来获得更简单、更简洁的方法。
没关系。显然我是 scaling/translating canvas 而不是视图,所以我想布局子项无法考虑 canvas 已经移动是有道理的。
因此,要么 scale/translate 整个视图,而不仅仅是它的 canvas(但这会导致大量动画并丢弃 frames/jerkiness),或者 scale/translate 仅 scale/translate canvas(这提供了改进的性能)并手动管理所有触摸事件,例如点击。