首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将ArcProgress (lib)添加到代号为TitleBar的TitleBar?

如何将ArcProgress (lib)添加到代号为TitleBar的TitleBar?
EN

Stack Overflow用户
提问于 2016-08-16 06:34:30
回答 1查看 114关注 0票数 1

我想创建一个淡出效果,如在工具栏API中所描述的。

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

不仅如此,ArcProgress应该会逐渐淡出,成为具有与AP相同的填充百分比的Slider

在向下滚动表单时,它应该“相互消失”。

这是可能的吗?如果是,怎么做?我已经做了很长时间,请提供一个代码示例。

编辑

在右边,你可以看到屏幕,然后向下滚动。

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

在向下滚动时,圆周过程(右)应淡入滑块(左)。

右边的代码

代码语言:javascript
复制
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

左边的代码:

代码语言:javascript
复制
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

现在的主要问题是:

如何使滑块在向下滚动时消失,并使滑块在向下滚动时出现?第二:为什么滑块没有显示?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-17 04:27:37

正如描述的这里那样,这不应该是工具栏API的问题。注意,在Toolbar部分的开发人员指南中有一个更完整的示例。

您只需将任意组件放置到工具栏中,并根据滚动位置将其行为/功能动画化。

代码语言:javascript
复制
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();

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38968051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档