如何将ArcProgress(lib)以代号1添加到TitleBar?

时间:2016-08-16 06:34:30

标签: codenameone

我想创建一个淡出效果,如Toolbar API中所述。

但不是静态图片,我想要ArcProgress(来自Cn1Lib "CircleProgress")。

不仅如此,ArcProgress应逐渐消失为与{AP}具有相同填充率的Slider

应该"相互淡化"向下滚动表单时。

有可能吗?如果有,怎么样?我一直在这方面工作很长时间,请提供代码示例。

修改

Scrolling down

在右侧,您会在向下滚动之前看到屏幕。

在左侧,工具栏中应该有一个滑块(我不知道它为什么不显示)。

在向下滚动时,圆形渐进(右侧)应淡入滑块(左侧)

正确的代码

ap = new ArcProgress ();
ap.setUnselectedStyle(new Style(0xCCCCCCCC ,0xff0000 , Font.createSystemFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_MEDIUM), (byte) 0b0));
ap.setProgress(10);

myForm.setTitleComponent  (ap); //works

左边的代码:

Slider jSlider = new Slider();
jSlider.setMaxValue(255);
jSlider.setMinValue(0);
jSlider.setProgress(50); 
jSlider.setEditable(true);
jSlider.setVisible(true);
jSlider.getAllStyles().setBgColor(0xff0000);
jSlider.getAllStyles().setFgColor(0xCCCCCCCC);
jSlider.getAllStyles().setBgTransparency(0b0);

myForm.setTitleComponent (jSlider); //does not work, for whatever reason

现在的主要问题是:

如何在向下滚动时使圆圈渐变消失并使滑块在向下滚动时显示?其次:为什么滑块不显示?

1 个答案:

答案 0 :(得分:1)

这不应该是工具栏API的问题,如here所述。 请注意,the developer guideToolbar部分中有一个更完整的示例。

您可以将任意组件放入工具栏中,并根据滚动位置设置其行为/功能的动画。

Form hi = new Form("Hi World", BoxLayout.y());

ArcProgress ap = new ArcProgress ();
ap.setUnselectedStyle(new Style(0xCCCCCCCC ,0xff0000 , Font.createSystemFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_MEDIUM), (byte) 0b0));
ap.setProgress(10);
Slider sl = new Slider();
sl.setProgress(10);
sl.getAllStyles().setOpacity(0);
sl.getSliderEmptyUnselectedStyle().setOpacity(0);
sl.getSliderFullUnselectedStyle().setOpacity(0);
sl.getSliderEmptySelectedStyle().setOpacity(0);
sl.getSliderFullSelectedStyle().setOpacity(0);
sl.getSliderEmptyUnselectedStyle().setBgTransparency(0);
sl.getSliderFullUnselectedStyle().setBgTransparency(0);
sl.getSliderEmptySelectedStyle().setBgTransparency(0);
sl.getSliderFullSelectedStyle().setBgTransparency(0);

hi.getToolbar().setTitleComponent  (LayeredLayout.encloseIn(sl, ap));

int slHeight = sl.getPreferredH();
int apHeight = ap.getPreferredH();
Motion height = Motion.createLinearMotion(apHeight, slHeight, 100);
Motion opacity = Motion.createLinearMotion(0, 255, 100);

ComponentAnimation cna = new ComponentAnimation() {

    @Override
    public boolean isInProgress() {
        return true;
    }

    @Override
    protected void updateState() {
        int s = getStep();
        height.setCurrentMotionTime(s);
        opacity.setCurrentMotionTime(s);
        int h = height.getValue();
        sl.setPreferredH(h);
        ap.setPreferredH(h);
        int o = opacity.getValue();
        sl.getSliderEmptyUnselectedStyle().setOpacity(o);
        sl.getSliderFullUnselectedStyle().setOpacity(o);
        sl.getSliderEmptySelectedStyle().setOpacity(o);
        sl.getSliderFullSelectedStyle().setOpacity(o);
        sl.getSliderEmptyUnselectedStyle().setBgTransparency(o);
        sl.getSliderFullUnselectedStyle().setBgTransparency(o);
        sl.getSliderEmptySelectedStyle().setBgTransparency(o);
        sl.getSliderFullSelectedStyle().setBgTransparency(o);
        sl.getAllStyles().setOpacity(o);
        ap.getAllStyles().setOpacity(255 - o);
    }
};

hi.getAnimationManager().onTitleScrollAnimation(cna);

for(int iter = 0 ; iter < 50 ; iter++) {
    hi.addComponent(new Label("Hi World"));
}
hi.show();

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here