いつも私が慣れていない機能を使用する前に、com.codename1.ui.Container.replace(Component, Component, Transition)
を理解するために少しのフォーム子孫クラスを書きました。アニメーション中にサイズやオフセットが間違っています
私のフォームで遊んでいるときに明白なことの1つは、アニメーション中に、アニメーション化されていないときとは異なり、コンポーネントのサイズやオフセットが異なっていることです。私はそれが意図されていないと確信しています、それは?
私が発見したもう1つのことは、enabled
プロパティがfalse
に設定されていても、ツールバーに追加したコマンドインスタンスが実行可能なままであることです。ここで期待されるべきことは何ですか?
コードを参照してください:
public class FormReplaceComponent extends Form {
private Component componentActual;
private Command commandReplace;
public FormReplaceComponent() {
setTitle("FormReplaceComponent");
setScrollable(false);
setLayout(new BorderLayout());
Container contentPane = getContentPane();
FloatingActionButton badge = FloatingActionButton.createBadge("123");
contentPane.add(BorderLayout.CENTER, badge);
componentActual = badge;
SpanLabel spanLabel = new SpanLabel(
"The quick brown fox jumps over the lazy dog");
CommonTransitions commonTransitions = CommonTransitions.createFade(800);
Transition transitionWrapper = new Transition() {
@Override
public void initTransition() {
commandReplace.setEnabled(false);
commonTransitions.init(getSource(), getDestination());
commonTransitions.initTransition();
}
@Override
public void paint(Graphics aGraphics) {
commonTransitions.paint(aGraphics);
}
@Override
public boolean animate() {
return commonTransitions.animate();
}
@Override
public void cleanup() {
commonTransitions.cleanup();
commandReplace.setEnabled(true);
super.cleanup();
}
};
commandReplace = new Command("Replace") {
public void actionPerformed(ActionEvent aActionEvent) {
if (componentActual == badge) {
contentPane.replace(badge, spanLabel, transitionWrapper);
componentActual = spanLabel;
} else {
contentPane.replace(spanLabel, badge, transitionWrapper);
componentActual = badge;
}
}
};
getToolbar().addCommandToRightBar(commandReplace);
}
}
'enabled'属性を更新するために' com.codename1.ui.Toolbar.findCommandComponent(Command) 'を使うことはうまくいきます、ありがとうございます。 'com.codename1.ui.Com.setSameSize(Component ...)'が使用されていても、コンポーネントが 'com.codename1.ui.layouts.BorderLayout.CENTER'であるために必要ではないはずですが、 Transitionはコンポーネントを目に見える形でペイントします。これはシミュレータとiPhone 5Sでも発生します。 –
'SpanLabel'は明らかにアニメーション中に下と下に移動します。バッジ、 'FloatingActionButton'は、明らかに成長します。これはコンポーネントが画像にペイントされ、これがペイントとは異なるためですか? –
それは可能です。それはフェードだけであるのですか、それとも他のトランジションで起こりますか?トランジションを直接使用すると起こりますか? –