首页 文章

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

提问于
浏览
1

我想创建Toolbar API中描述的渐弱效果 .

但不是静态图片,我希望有一个 ArcProgress (来自Cn1Lib "CircleProgress") .

不仅如此,但 ArcProgress 应该逐渐消失,并且具有与AP相同的填充百分比 Slider .

向下滚动表单时,它应该“相互淡入” .

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

EDIT

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

现在主要的问题是:

How can I make the circleprogress disappear on scrolling down and make the Slider appear on scrolling down? 其次:为什么滑块没有显示?

1 回答

  • 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

相关问题