मुख्य सामग्री पर जाएँ
CrossFly 100% ओपन सोर्सGitHub पर फ़ॉलो करें
CrossFlyCrossFly
शुरू करें

यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।

किसी कंपोनेंट का fade (प्रकट/अदृश्य होना) कैसे करें

उद्देश्य. किसी कंपोनेंट को सहजता से प्रकट कराना (0 → 1) या अदृश्य कराना (1 → 0)। AlphaAnimation एक float को ease-in-out के साथ इंटरपोलेट करता है; आप उस वैल्यू को कंपोनेंट की ओपेसिटी पर लागू करते हैं और repaint को बाध्य करते हैं।

उपयोग किए गए APIs

  • new AlphaAnimation(float start, float end, float duration [, float fps]) — एनिमेशन बनाता है। start/end [0,1] में क्लैंप किए जाते हैं; इंटरपोलेशन ease-in-out cubic; duration सेकंड में; fps वैकल्पिक (डिफ़ॉल्ट 60)।
  • AlphaAnimation.onUpdate(Runnable) — प्रत्येक फ्रेम पर callback; यहाँ getValue() पढ़ें।
  • AlphaAnimation.onComplete(Runnable) — end पर पहुँचने पर callback (stop() द्वारा भी ट्रिगर होता है)।
  • AlphaAnimation.getValue() — वर्तमान इंटरपोलेटेड वैल्यू।
  • AlphaAnimation.start() / stop() / cancel() — आरंभ / रोकता है (onComplete ट्रिगर करता है) / रद्द करता है (ट्रिगर नहीं करता)।
  • Component.alpha(float) — कंपोनेंट की ओपेसिटी सेट करता है (0–1, क्लैंप की गई)। Javadoc में विसंगति: दस्तावेज़ setAlpha का उल्लेख करता है, पर वास्तविक मेथड alpha(...) है।
  • Component.repaint() — स्टैटिक मेथड; री-रेंडर का अनुरोध करता है (CrossFly माँग पर रेंडर करता है, इसलिए onUpdate के भीतर इसे कॉल करना अनिवार्य है)।

पूरा उदाहरण (कॉपी करें, पेस्ट करें और चलाएँ)

package com.exemplo;

import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
import dev.crossfly.ui.animation.*;

/** चलाने योग्य मुख्य स्क्रीन: खुलने पर एक Label पर fade-in लागू करती है। */
public class MainWindow extends Window
{
   @Override
   public void onShow() throws Exception
   {
      super.onShow();
      setLayout(new VerticalLayout());

      Label c = new Label("Olá");
      add(c);

      // onUpdate के अंदर getValue() पढ़ने के लिए वेरिएबल को पहले घोषित करें।
      AlphaAnimation anim = new AlphaAnimation(0f, 1f, 0.3f);       // 300 ms, 0 → 1
      anim.onUpdate(() ->
         {
            c.alpha(anim.getValue());   // अपारदर्शिता लागू करता है
            Component.repaint();        // माँग पर रेंडर: इसके बिना, frame फिर से नहीं बनता
         })
         .onComplete(() -> Component.repaint())
         .start();
   }
}

नीचे दिया गया अंश केवल मुख्य भाग दिखाता है। इसे चलाने के लिए, इसे ऊपर दिए गए MainWindow कंकाल में रखें।

न्यूनतम अंश

// स्रोत में सत्यापित: AlphaAnimation clamp [0,1] ease-in-out; Component.alpha(float); Component.repaint() static
Label c = new Label("Olá");
add(c);

// onUpdate के अंदर getValue() पढ़ने के लिए वेरिएबल को पहले घोषित करें।
AlphaAnimation anim = new AlphaAnimation(0f, 1f, 0.3f);       // 300 ms, 0 → 1
anim.onUpdate(() ->
   {
      c.alpha(anim.getValue());   // अपारदर्शिता लागू करता है
      Component.repaint();        // माँग पर रेंडर: इसके बिना, frame फिर से नहीं बनता
   })
   .onComplete(() -> Component.repaint())
   .start();

नोट्स:

  • alpha(1f) (या >= 0.999) ओपेसिटी प्रॉपर्टी हटा देता है (कंपोनेंट 100% ओपेक); alpha(0f) इसे अदृश्य बना देता है पर लेआउट में अब भी मौजूद रहता है।
  • fade-out के लिए new AlphaAnimation(1f, 0f, 0.3f) उपयोग करें और, onComplete में, यदि चाहें तो कंपोनेंट को hide()/हटाएँ।
  • onUpdate में हमेशा Component.repaint() कॉल करें — CrossFly केवल अनुरोध किए जाने पर ही पुनः चित्रित करता है।

और गहराई से जानें

क्या यह पृष्ठ उपयोगी था?