यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
Skins
एक Skin सभी कॉम्पोनेंट्स की संरचनात्मक विज़ुअल पहचान को परिभाषित करता है: आकार (कोने), बॉर्डर की मोटाई,
रिक्ति, शैडो और डिफ़ॉल्ट आइकन। तीन अंतर्निहित हैं: MaterialSkin, IOSSkin
और FlutterSkin।
Skin ≠ रंग। Skin = संरचना/रेंडरर; पैलेट (हल्का/गहरा, primary/surface…)
ColorScheme/ThemeModeसे आता है। एक कस्टम स्किन आकार/रिक्ति बदलती है, रंग नहीं।
डिफ़ॉल्ट स्किन
Skin.get() डिफ़ॉल्ट रूप से MaterialSkin लौटाता है — या iOS पर स्वचालित रूप से IOSSkin।
पूरा उदाहरण (कॉपी करें, पेस्ट करें और चलाएँ)
package com.exemplo;
import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
import dev.crossfly.ui.style.*; // Styles
import dev.crossfly.ui.skin.*; // Skin, MaterialSkin, IOSSkin, FlutterSkin
/** चलाने योग्य मुख्य स्क्रीन। launcher (classname) की ओर संकेत करें और चलाएँ: gradlew :lwjgl3:run */
public class MainWindow extends Window
{
@Override
public void onShow() throws Exception
{
super.onShow();
Skin.set(new IOSSkin()); // वैश्विक skin = iOS संरचना/आकार (रंग थीम से ही आते रहते हैं)
setLayout(new VerticalLayout());
// रियल-टाइम में वैश्विक skin बदलने के बटन:
Button material = new Button("Skin Material");
material.onAction(c -> { Skin.set(new MaterialSkin()); restyle(); });
add(LAY_AUTO, material);
Button ios = new Button("Skin iOS");
ios.onAction(c -> { Skin.set(new IOSSkin()); restyle(); });
add(LAY_AUTO, ios);
Button flutter = new Button("Skin Flutter");
flutter.onAction(c -> { Skin.set(new FlutterSkin()); restyle(); });
add(LAY_AUTO, flutter);
// प्रति-कॉम्पोनेंट Skin: यह बटन iOS रहता है भले वैश्विक बदल जाए।
Button fixoIos = new Button("Sempre iOS");
fixoIos.skin(new IOSSkin());
add(LAY_AUTO, fixoIos);
}
}
नीचे दिए गए स्निपेट सिर्फ़ मूल भाग दिखाते हैं (जो
onShow()के अंदर जाता है)। चलाने के लिए, इन्हें ऊपर वालेMainWindowकंकाल में रखें।
वैश्विक स्किन बदलना
यह उन सभी कॉम्पोनेंट्स को प्रभावित करता है जिनकी अपनी स्किन नहीं है:
Skin.set(new IOSSkin()); // पूरी UI को iOS रूप मिलता है
Skin.set(new FlutterSkin()); // … या Flutter
प्रति कॉम्पोनेंट स्किन
केवल उस कॉम्पोनेंट में वैश्विक को अधिरोहित (override) करता है:
meuBotao.skin(new IOSSkin()); // यह बटन iOS रहता है, बाकी Material बना रहता है
कस्टम स्किन (आकार/रिक्ति बदलें, रंग नहीं)
किसी स्किन को विस्तारित करें और संरचना हुक्स को अधिरोहित करें:
public class RoundedSkin extends MaterialSkin {
@Override public float borderRadius() { return 1.5f; } // अच्छी तरह गोल किए हुए कोने
@Override public float borderThick() { return 0.05f; } // पतला बॉर्डर
}
// वैश्विक रूप से लागू करें:
Skin.set(new RoundedSkin());
रंगों को हल्के/गहरे के अनुसार अनुकूलित करने के लिए, स्किन में मत छेड़ें — ColorScheme/ThemeMode
का उपयोग करें (देखें हल्का/गहरा मोड)।
परतें कैसे परस्पर क्रिया करती हैं
सर्वोत्तम अभ्यास
- बूटस्ट्रैप में एक वैश्विक स्किन चुनें;
.skin(...)का प्रति-कॉम्पोनेंट उपयोग केवल अपवादों में करें। - कस्टम स्किन = आकार/रिक्ति/शैडो। रंग और हल्का/गहरा =
ColorScheme।
आम गलतियाँ
- स्किन को अधिरोहित करके रंग बदलने की कोशिश करना — रंग
ColorSchemeसे आते हैं, स्किन से नहीं। - बिना आवश्यकता के एक ही स्क्रीन पर विभिन्न स्किन मिलाना (विज़ुअल असंगति)।