यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
किसी कंपोनेंट का 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 केवल अनुरोध किए जाने पर ही पुनः चित्रित करता है।
और गहराई से जानें
- वैल्यू एनिमेशन
- संबंधित रेसिपी: लूप में पल्स · किसी कंपोनेंट को हिलाना
- संबंधित: स्क्रीन खोलना और बंद करना
क्या यह पृष्ठ उपयोगी था?प्रतिक्रिया के लिए धन्यवाद!