我想创建一个淡出效果,如Toolbar 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
现在的主要问题是:
如何在向下滚动时使圆圈渐变消失并使滑块在向下滚动时显示?其次:为什么滑块不显示?
答案 0 :(得分:1)
这不应该是工具栏API的问题,如here所述。
请注意,the developer guide的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();