如何检测容器列表中的“挤出”?

时间:2016-09-24 07:42:02

标签: codenameone

我希望能够将两个容器夹在彼此远离的容器列表中,以在它们之间插入一个新的空容器。类似于iPhone应用程序“清除”插入新任务的方式(例如,请参见此页面上的第一张图片https://www.raywenderlich.com/22174/how-to-make-a-gesture-driven-to-do-list-app-part-33) - 当两个索引容器相互挤压时插入小红色容器)。关于如何在Codename One中实现这一目标的任何提示?

1 个答案:

答案 0 :(得分:0)

通常你会覆盖pinch方法来实现缩放或类似的调用。但是,在这种情况下,这不会起作用,因为夹点将超出组件边界,并且它将无法工作。

我能想到这样做的唯一方法是覆盖pointerDragged(int[],int[])中的Form方法,并检测捏动作为实现此目的的增长。您可以在Component.java中查看代码以进行捏合,因为它应该是一个很好的基础:

public void pointerDragged(int[] x, int[] y) {
    if (x.length > 1) {
        double currentDis = distance(x, y);

        // prevent division by 0
        if (pinchDistance <= 0) {
            pinchDistance = currentDis;
        }
        double scale = currentDis / pinchDistance;
        if (pinch((float)scale)) {
            return;
        }
    }
    pointerDragged(x[0], y[0]);
}
private double distance(int[] x, int[] y) {
    int disx = x[0] - x[1];
    int disy = y[0] - y[1];
    return Math.sqrt(disx * disx + disy * disy);
}

添加条目很简单,只需在该位置放置一个空白组件并增加其首选大小,直到达到所需大小。