यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
रिस्पॉन्सिवनेस: सभी स्क्रीन के लिए एक UI
CrossFly में, रिस्पॉन्सिवनेस कोई अलग सुविधा नहीं है — यह संबंधों द्वारा मापने का परिणाम है। यदि आप नीचे दिए गए सिद्धांतों का पालन करते हैं, तो स्क्रीन आकार, घनत्व (DPI), फ़ॉन्ट स्केल और ओरिएंटेशन के अनुसार बिना media queries और बिना मैन्युअल पुनर्गणना के पुनः-अनुकूलित हो जाती है। यह पृष्ठ अध्याय 36 का कार्य-केंद्रित अंश है; “क्यों” लेआउट और Relative मॉडल में है।
5 सिद्धांत
- कभी भी निश्चित पिक्सेल में स्थान न दें। अंश,
RelativeऔरLAY_FILL/LAY_AUTOका उपयोग करें। - लेआउट को मापने दें।
LAY_AUTO/Relative.AUTO/RelSize.AUTOSIZEप्राकृतिक आकार की रिपोर्ट करते हैं। - अंतराल भी स्केल होता है।
ingap/outgapGap.ofFont(...)के माध्यम से, कभी पिक्सेल नहीं। - प्रति अक्ष एक लचीला क्षेत्र। बचे हुए को अवशोषित करने के लिए एक कंपोनेंट को
LAY_FILLसे चिह्नित करें। - Resize स्वचालित है — यदि आपने ऊपर वाला किया। केवल मैन्युअल
setBoundsकोड की माँग करता है।
टूलबॉक्स
| टूल | कब |
|---|---|
Relative.ofFont(x) |
आकार जो फ़ॉन्ट/DPI के साथ स्केल होने चाहिए (घनत्व और ज़ूम अंतर्निहित) |
Relative.ofScreen(x[, ScreenSize.MIN]) |
स्क्रीन का अंश; MIN = portrait/landscape के अनुसार अनुकूलित |
LAY_FILL / LAY_AUTO / अंश |
container को विभाजित करना |
Gap.ofFont(...) |
padding/margin जो स्केल होते हैं |
Screen.minSize |
ओरिएंटेशन के बीच स्थिर breakpoint |
Screen.minSize के साथ Breakpoints
छोटी भुजा (Screen.minSize) का उपयोग करें, width का नहीं — यह तब स्थिर रहता है जब डिवाइस घूमता है:
boolean tablet = Screen.minSize >= 600; // उदाहरण के लिए, 1 बनाम 2 कॉलम तय करता है
जब (कभी-कभार) व्यवस्था बदलनी हो: onReposition()
यदि लेआउट को ओरिएंटेशन के अनुसार संरचना बदलनी चाहिए, तो Window.onReposition() को ओवरराइड करें:
@Override protected void onReposition() throws Exception {
painel.removeAll();
if (Screen.isLandscape) { // 2 कॉलम
painel.setLayout(new HorizontalLayout());
painel.add(0.5f, lista); painel.add(0.5f, detalhe);
} else { // 1 कॉलम
painel.setLayout(new VerticalLayout());
painel.add(LAY_FILL, lista); painel.add(LAY_AUTO, detalhe);
}
}
रिस्पॉन्सिवनेस चेकलिस्ट
- शून्य निश्चित
ofPixels/setBounds(उचित अपवाद को छोड़कर)। - प्रति लचीले अक्ष ठीक एक
LAY_FILL। -
Gap.ofFont/ofScreenके साथ अंतराल। -
ofScreen(v, ScreenSize.MIN)के साथ वर्ग/आइकन। -
Screen.minSizeके साथ breakpoints।
एंटी-पैटर्न
| एंटी-पैटर्न | सुधार |
|---|---|
setBounds(0,0,300,48) |
LAY_AUTO/Relative.ofFont |
निश्चित Gap.ofPixels(16) |
Gap.ofFont(1f) |
Screen.width द्वारा breakpoint |
Screen.minSize |
एक ही अक्ष पर दो LAY_FILL |
केवल एक |
यह भी देखें
- विहित स्रोत: अध्याय 36 · अवधारणा: लेआउट और Relative
- लेआउट · रिस्पॉन्सिवनेस (ui)
क्या यह पृष्ठ उपयोगी था?प्रतिक्रिया के लिए धन्यवाद!