我想创建一个淡出效果,如在工具栏API中所描述的。
但是,我想要的不是静态图片,而是ArcProgress (来自Cn1Lib "CircleProgress“)。
不仅如此,ArcProgress应该会逐渐淡出,成为具有与AP相同的填充百分比的Slider。
在向下滚动表单时,它应该“相互消失”。
这是可能的吗?如果是,怎么做?我已经做了很长时间,请提供一个代码示例。
编辑

在右边,你可以看到屏幕,然后向下滚动。
在左边,工具栏中应该有一个滑块(我不知道为什么它没有显示)。
在向下滚动时,圆周过程(右)应淡入滑块(左)。
右边的代码
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现在的主要问题是:
如何使滑块在向下滚动时消失,并使滑块在向下滚动时出现?第二:为什么滑块没有显示?
发布于 2016-08-17 04:27:37
正如描述的这里那样,这不应该是工具栏API的问题。注意,在Toolbar部分的开发人员指南中有一个更完整的示例。
您只需将任意组件放置到工具栏中,并根据滚动位置将其行为/功能动画化。
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();






https://stackoverflow.com/questions/38968051
复制相似问题