यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
स्पर्श और फ़ीडबैक
स्पर्श पर विज़ुअल प्रतिक्रिया (बटन का “धँसना”) CrossFly में स्वचालित है जब स्टाइल को दबाने-योग्य के रूप में चिह्नित किया जाता है — आप कोई एनिमेशन नहीं लिखते।
पूरा उदाहरण (कॉपी करें, पेस्ट करें और चलाएँ)
package com.exemplo;
import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
import dev.crossfly.ui.style.*; // ComponentStyle
/** चलाने योग्य मुख्य स्क्रीन। launcher (classname) की ओर संकेत करें और चलाएँ: gradlew :lwjgl3:run */
public class MainWindow extends Window
{
@Override
public void onShow() throws Exception
{
super.onShow();
setLayout(new VerticalLayout());
// प्रेस पर स्वचालित फ़ीडबैक: .pressable() के साथ कस्टम स्टाइल
Button botao = new Button("Enviar");
botao.style(new ComponentStyle().backColor(0xFF0173ED).pressable());
add(LAY_AUTO, botao);
// स्टेट दर्शाने के लिए अपारदर्शिता का मैन्युअल नियंत्रण (चयनित/अक्षम)
Label item = new Label("Item");
add(LAY_AUTO, item);
boolean selecionado = false;
item.alpha(selecionado ? 1f : 0.5f);
Component.repaint();
// फ़ीडबैक के साथ स्टेट टॉगल करता है: टच करने पर आइटम को वापस अपारदर्शी उजागर करता है
botao.onAction(c -> { item.alpha(1f); Component.repaint(); });
}
}
नीचे दिए गए स्निपेट सिर्फ़ मूल भाग दिखाते हैं (जो
onShow()के अंदर जाता है)। चलाने के लिए, इन्हें ऊपर वालेMainWindowकंकाल में रखें।
स्वचालित दबाव फ़ीडबैक — pressable()
स्टाइल को pressable() के रूप में चिह्नित करें और कॉम्पोनेंट स्पर्श होने पर स्वयं एनिमेट होता है (थीम की
animationDuration का उपयोग करते हुए):
Button b = new Button("Enviar");
b.style(Styles.button()); // Skin का बटन स्टाइल पहले से ही .pressable() के साथ आता है
// कस्टम स्टाइल में, इसे स्पष्ट रूप से सक्षम करें:
b.style(new ComponentStyle().backColor(0xFF0173ED).pressable());
Skin सामान्य से pressed स्थिति उत्पन्न करता है (डिफ़ॉल्ट रूप से, गहरा पृष्ठभूमि)। अनुकूलित करने के लिए,
एक pressedStyle(...) परिभाषित करें (देखें कॉम्पोनेंट स्टाइल करना)।
फ़ीडबैक की अवधि
यह Styles.animationDuration से आती है (डिफ़ॉल्ट 0.3s) और Skin के स्टाइल्स द्वारा पढ़ी जाती है। वैश्विक समायोजन:
Styles.animationDuration = 0.2f; // पूरे ऐप में अधिक "तेज़" टच
अपारदर्शिता का मैन्युअल नियंत्रण — alpha(...)
किसी कॉम्पोनेंट को स्वयं धुँधला/उभारने के लिए (उदा.: विज़ुअल रूप से अक्षम करना, चयन को हाइलाइट करना),
alpha(float) का उपयोग करें (0 = पारदर्शी, 1 = अपारदर्शी):
item.alpha(selecionado ? 1f : 0.5f);
Component.repaint();
अपारदर्शिता के सहज ट्रांज़िशन के लिए, इसे AlphaAnimation के साथ संयोजित करें:
AlphaAnimation fade = new AlphaAnimation(item.alpha(), 1f, 0.2f);
fade.onUpdate(() -> { item.alpha(fade.getValue()); Component.repaint(); }).start();
सर्वोत्तम अभ्यास
- स्पर्श फ़ीडबैक को
pressable()संभालने दें — दबाव को हाथ से एनिमेट न करें। - स्थिति (अक्षम/चयनित) के लिए
alpha()का उपयोग करें; एनिमेट केवल तब करें जब ट्रांज़िशन कुछ जोड़े। - एक अक्षम कॉम्पोनेंट स्टाइल के
disabledAlphaसे पहले ही धुँधला हो जाता है — इसे दोहराएँ नहीं।
आम गलतियाँ
pressable()के बिना कस्टम स्टाइल → स्पर्श पर बिना फ़ीडबैक वाला बटन।alpha(...)सेट करना औरComponent.repaint()भूल जाना (रेंडर माँग पर होता है)।