我希望能够将两个容器夹在彼此远离的容器列表中,以在它们之间插入一个新的空容器。类似于iPhone应用程序“清除”插入新任务的方式(例如,请参见此页面上的第一张图片https://www.raywenderlich.com/22174/how-to-make-a-gesture-driven-to-do-list-app-part-33) - 当两个索引容器相互挤压时插入小红色容器)。关于如何在Codename One中实现这一目标的任何提示?
答案 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);
}
添加条目很简单,只需在该位置放置一个空白组件并增加其首选大小,直到达到所需大小。