यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
स्क्रीन खोलते/बंद करते समय ट्रांज़िशन कैसे लागू करें
उद्देश्य. वैल्यू एनिमेशन (जिन्हें आप स्वयं नियंत्रित करते हैं) के विपरीत, एक स्क्रीन ट्रांज़िशन को फ्रेमवर्क तब लागू करता है जब कोई Window स्टैक में जोड़ा/हटाया जाता है। बस इसे show() से पहले WindowStyle में कॉन्फ़िगर करें; hide() अपने आप उल्टा ट्रांज़िशन चलाता है।
उपयोग किए गए APIs
WindowStyle.transition(UIConstants.Transition t)— इफ़ेक्ट परिभाषित करता है (डिफ़ॉल्ट अवधि 0.5s)।WindowStyle.transition(Transition t, float durationSeconds)— इफ़ेक्ट + अवधि एक साथ।WindowStyle.transitionDuration(float d)— केवल अवधि।WindowStyle.transition(फ़ील्ड) — डिफ़ॉल्टTransition.NONE(कोई एनिमेशन नहीं)।UIConstants.Transition— enum:NONE, FADE, SLIDE_LEFT, SLIDE_RIGHT, SLIDE_UP, SLIDE_DOWN, SCALE, SCALE_DOWN। छिपाते समय, फ्रेमवर्कt.reverse()का उपयोग करता है (जैसे:SLIDE_LEFT→SLIDE_RIGHT,SCALE→SCALE_DOWN)।Window.getStyle()—ComponentStyleलौटाता है; किसीWindowके लिए यह एकWindowStyleहोता है।
पूरा उदाहरण (कॉपी करें, पेस्ट करें और चलाएँ)
package com.exemplo;
import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
import dev.crossfly.ui.animation.*;
/** चलाने योग्य मुख्य स्क्रीन: OutraTela को SLIDE_LEFT ट्रांज़िशन के साथ खोलती है। */
public class MainWindow extends Window
{
@Override
public void onShow() throws Exception
{
super.onShow();
setLayout(new VerticalLayout());
add(new Label("Tela inicial"));
add(new Button("Abrir detalhe").onAction(e -> new OutraTela().show())); // दाईं ओर से सरकता है
}
}
/** स्टैक की गई स्क्रीन: constructor में ट्रांज़िशन कॉन्फ़िगर करती है; hide() उल्टा (SLIDE_RIGHT) चलाता है। */
class OutraTela extends Window
{
public OutraTela()
{
// दिखाने से पहले style में ट्रांज़िशन कॉन्फ़िगर करें
((WindowStyle) getStyle()).transition(UIConstants.Transition.SLIDE_LEFT, 0.4f);
}
@Override
public void onShow() throws Exception
{
super.onShow();
setLayout(new VerticalLayout());
add(new Label("Detalhe"));
add(new Button("Voltar").onAction(e -> hide())); // hide() स्वतः SLIDE_RIGHT (उल्टा) चलाता है
}
}
नीचे दिया गया अंश केवल मुख्य भाग दिखाता है। इसे चलाने के लिए, इसे ऊपर दिए गए
MainWindowकंकाल में रखें।
न्यूनतम अंश
// स्रोत में सत्यापित: Window._show() ScreenTransition.begin(ws.transition, ws.transitionDuration) को ट्रिगर करता है
// Window.hide() उल्टा ट्रांज़िशन (ws.transition.reverse()) ट्रिगर करता है
public class DetalheTela extends Window
{
public DetalheTela()
{
// दिखाने से पहले style में ट्रांज़िशन कॉन्फ़िगर करें
((WindowStyle) getStyle()).transition(UIConstants.Transition.SLIDE_LEFT, 0.4f);
}
@Override
public void onShow() throws Exception
{
super.onShow();
setLayout(new GridLayout());
add(new Label("Detalhe"));
add(new Button("Voltar").onAction(e -> hide())); // hide() स्वतः SLIDE_RIGHT (उल्टा) चलाता है
}
}
// ट्रांज़िशन के साथ खोलें:
new DetalheTela().show(); // दाईं ओर से बाईं ओर सरकता है
नोट्स:
- ट्रांज़िशन को
_show()/hide()मेंWindowStyleसे पढ़ा जाता है। इसे कंस्ट्रक्टर में याshow()से पहले किसी भी बिंदु पर कॉन्फ़िगर करें — पहले से दिखाए जाने के बाद इसे बदलने से प्रवेश फिर से एनिमेट नहीं होता। - निकास को नियंत्रित करने की उम्मीद में किसी भिन्न ट्रांज़िशन के साथ
hide()को मत कॉल करें: निकास हमेशा कॉन्फ़िगर किए गए के उल्टे (transition.reverse()) के रूप में होता है। Pickerडिफ़ॉल्ट रूप से पहले से हीFADEका उपयोग करता है (यदि यहNONEमें हो तोPicker._show()में इसे बलपूर्वक लागू किया जाता है) — आपको pickers में शायद ही कभी ट्रांज़िशन कॉन्फ़िगर करने की आवश्यकता होती है।- ये ट्रांज़िशन स्क्रीनों के बीच अदला-बदली (पूरी
Window) को एनिमेट करते हैं। स्क्रीन के भीतर किसी अलग कंपोनेंट को एनिमेट करने के लिए, वैल्यू एनिमेशन का उपयोग करें (Fade, Mover, Pulso)।
और गहराई से जानें
- स्क्रीन ट्रांज़िशन
- संबंधित रेसिपी: किसी कंपोनेंट का Fade
- संबंधित: स्क्रीन खोलना और बंद करना
क्या यह पृष्ठ उपयोगी था?प्रतिक्रिया के लिए धन्यवाद!