Codenameone CN1中滚动期间的绘画抖动

Codenameone CN1中滚动期间的绘画抖动,codenameone,Codenameone,我想在向下滚动容器的内容时隐藏一个条。问题是,当酒吧被隐藏或出现时,会有某种程度的不安。我假设存在两个不同绘制过程的冲突(一个链接到滚动,另一个链接到隐藏动画)。我怎样才能避免这种紧张 屏幕录制(模拟器,但也发生在我的智能手机上): 代码片段(隐藏/显示条。它只是一个滚动监听器): 。。。。 articleGallery.addScrollListener(this::onGalleryScroll); .... 私有布尔ignoreEventHandling; 私有void onGaller

我想在向下滚动
容器的内容时隐藏一个条。问题是,当酒吧被隐藏或出现时,会有某种程度的不安。我假设存在两个不同绘制过程的冲突(一个链接到滚动,另一个链接到隐藏动画)。我怎样才能避免这种紧张

屏幕录制(模拟器,但也发生在我的智能手机上):

代码片段(隐藏/显示条。它只是一个
滚动监听器
):

。。。。
articleGallery.addScrollListener(this::onGalleryScroll);
....
私有布尔ignoreEventHandling;
私有void onGalleryScroll(intsx、intsy、intosx、intosy){
if(ignoreEventHandling)返回;
如果(sY>有效垂直滚动增量){
如果(!bar.ishiden()){
ignoreEventHandling=true;
bar.setHidden(true);
bar.getParent().animateLayoutAndWait(250);
ignoreEventHandling=false;
log.p(“由于滚动而隐藏横幅”);
}
}否则如果(sY<有效垂直滚动增量){
if(bar.ishiden()){
ignoreEventHandling=true;
bar.setHidden(假);
bar.getParent().animateLayoutAndWait(250);
ignoreEventHandling=false;
log.p(“滚动后显示横幅”);
}
}

当用户主动滚动时,您正在进行动画布局,这与当前逻辑相冲突。中有一个动画标题区域示例


你也可以在这本老教程中看到这一点。要点是你需要使用专门的标题效果。

啊,这正是我想要的!只有一个侧节点:当我使用StyleAnimations时,它工作得很好。但我不确定如何将其与隐藏布局动画结合起来。我在academy课程中显示了移动布局,有我在这里详细解释了一些细微差别。
....
articleGallery.addScrollListener(this::onGalleryScroll);
....

private boolean ignoreEventHandling;

private void onGalleryScroll(int sX, int sY, int osX, int osY) {

    if(ignoreEventHandling) return;

    if(sY > SIGNIFICANT_VERT_SCROLL_DELTA) {
        if(!bar.isHidden()) {
            ignoreEventHandling = true;
            bar.setHidden(true);

            bar.getParent().animateLayoutAndWait(250);

            ignoreEventHandling = false;
            log.p("hiding banner due to scroll");
        }
    } else if (sY < SIGNIFICANT_VERT_SCROLL_DELTA) {

        if(bar.isHidden()) {
            ignoreEventHandling = true;
            bar.setHidden(false);

            bar.getParent().animateLayoutAndWait(250);

            ignoreEventHandling = false;
            log.p("showing up banner after scroll");
        }
    }