यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
स्क्रीन ट्रांज़िशन
किसी खिड़की के show()/hide() पर, CrossFly स्क्रीन को पहले और बाद में कैप्चर करके और उनके बीच
इंटरपोलेट करके बदलाव को एनिमेट कर सकता है। आप WindowStyle में प्रभाव घोषित करते हैं; फ़्रेमवर्क
ट्रांज़िशन को स्वयं ट्रिगर करता है।
पूरा उदाहरण (कॉपी करें, पेस्ट करें और चलाएँ)
package com.exemplo;
import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
/** चलाने योग्य मुख्य स्क्रीन। launcher (classname) की ओर संकेत करें और चलाएँ: gradlew :lwjgl3:run */
public class MainWindow extends Window
{
@Override
public void onShow() throws Exception
{
super.onShow();
// UI माउंट करने से पहले transition घोषित करें ("पहले" पहले paint में कैप्चर होता है)।
// getStyle() यहाँ WindowStyle का अनुमान लगाता है, जहाँ transition(...) परिभाषित है।
getStyle().transition(UIConstants.Transition.SLIDE_LEFT, 0.4f); // प्रभाव + अवधि (s)
setLayout(new VerticalLayout());
Label titulo = new Label("Nova tela");
add(LAY_AUTO, titulo);
Button avancar = new Button("Avançar");
add(LAY_AUTO, avancar);
// SLIDE_LEFT transition वाली दूसरी विंडो स्टैक करने पर, framework खुद ही स्विच को एनिमेट करता है:
avancar.onAction(c -> new MainWindow().show());
}
}
नीचे दिए गए स्निपेट सिर्फ़ मूल भाग दिखाते हैं (जो
onShow()के अंदर जाता है)। चलाने के लिए, इन्हें ऊपर वालेMainWindowकंकाल में रखें।
घोषणात्मक तरीका (अनुशंसित)
प्रभाव को खिड़की की स्टाइल में परिभाषित करें — onShow() में, कुछ भी दिखने से पहले:
@Override public void onShow() throws Exception {
super.onShow();
getStyle().transition(UIConstants.Transition.SLIDE_LEFT, 0.4f); // प्रभाव + अवधि (s)
// … UI माउंट करता है …
}
या WindowStyle के फ़ील्ड/फ़्लुएंट द्वारा:
getStyle().transition = UIConstants.Transition.FADE; // सार्वजनिक फ़ील्ड
getStyle().transitionDuration = 0.3f;
// फ़्लुएंट समतुल्य:
getStyle().transition(UIConstants.Transition.FADE).transitionDuration(0.3f);
उपलब्ध प्रभाव (UIConstants.Transition)
| मान | प्रभाव |
|---|---|
NONE |
तत्काल बदलाव (डिफ़ॉल्ट) |
FADE |
एक स्क्रीन दूसरे पर धुँधलाती है |
SLIDE_LEFT / SLIDE_RIGHT |
क्षैतिज अक्ष पर स्लाइड करता है |
SLIDE_UP / SLIDE_DOWN |
ऊर्ध्वाधर अक्ष पर स्लाइड करता है |
SCALE |
नई स्क्रीन केंद्र से बढ़ती है |
SCALE_DOWN |
वर्तमान स्क्रीन केंद्र की ओर सिकुड़ती है |
डिफ़ॉल्ट:
WindowStyle.transitionNONEसे शुरू होता है औरtransitionDuration0.5sसे। Pickers पहले से ही डिफ़ॉल्ट रूप सेFADEका उपयोग करते हैं।
अंदरूनी तौर पर यह कैसे काम करता है
ScreenTransition.begin(Transition, duration) वर्तमान स्क्रीन को “पहले” के रूप में और नई को अगले फ़्रेम में
“बाद” के रूप में कैप्चर करता है और इंटरपोलेट करता है (एक आंतरिक AlphaAnimation का उपयोग करते हुए)। आप आम तौर
पर इसे नहीं कॉल करते — जब transition != NONE हो, तब Window.show()/hide() इसे कॉल करता है।
सर्वोत्तम अभ्यास
- नेविगेशन के इरादे के अनुसार प्रभाव चुनें: आगे बढ़ने के लिए
SLIDE_LEFT, वापस जाने के लिएSLIDE_RIGHT/SCALE_DOWN। - अवधि छोटी रखें (0.25–0.4s) — लंबे ट्रांज़िशन बाधा डालते हैं।
- ट्रांज़िशन को
onShow()में परिभाषित करें (खिड़की के पेंट होने से पहले)।
आम गलतियाँ
- ट्रांज़िशन को बहुत देर से परिभाषित करना (पहले पेंट के बाद) — “पहले” पहले ही बदल चुका है।
- लंबी अवधि जो नेविगेशन को धीमा कर देती है।