拖动PlayN / Tripleplay小部件而不重新计算布局

时间:2014-09-11 05:41:26

标签: android layout playn tripleplay

我喜欢PlayN框架的Tripleplay UI布局,但我有时可以禁用布局计算,以便我可以移动内容或更改窗口小部件的文本而不会触发布局计算吗?

例如,我在AxisLayout中创建了一个带有单个按钮的简单屏幕,并为该按钮添加了一个监听器:

button.layer.addListener(new Adapter() {
    private float startX;

    @Override
    public void onPointerStart(Event event) {
        startX = event.localX();
    }

    @Override
    public void onPointerDrag(Event event) {
        button.layer.transform().translateX(event.localX() - startX);
    }
});

现在拖动按钮会向左和向右移动,我很高兴。您可以看到源代码on Github

但是,此代码有两个问题:

  1. 当我松开鼠标或抬起手指时,按钮会回到起始位置。
  2. 如果我将鼠标或手指向上拖动以使其离开按钮,按钮将短暂闪回到其起始位置,然后继续拖动。如果我在按钮外面松开鼠标或将手指抬离此状态,按钮就会停留在原位。
  3. 似乎正在发生的事情是,无论何时按钮将状态从按下状态改变为未按下状态或其他方式,屏幕的布局都会重新计算,并且按钮会返回到其起始位置。

    有没有办法告诉屏幕不要重新计算其布局?我可以告诉按钮它有效吗?

    我能想到的唯一策略是将按钮放在轴布局中,计算其位置,然后在移动它时将其从轴布局移动到绝对布局。我希望有一种更简单的方法。

1 个答案:

答案 0 :(得分:1)

三重播放元素的概念是它们根据布局,约束,大小等来定位自己。

如果您希望能够移动它们,则需要使用AbsoluteLayout