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

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

10. रिस्पॉन्सिव बनाना

आप क्या सीखेंगे: ऐप को बिना किसी फिक्स्ड पिक्सेल के किसी भी स्क्रीन के अनुकूल बनाना। पूर्वापेक्षाएँ: डेटा को स्थायी बनाना.

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

अनुकूली ऐप: onReposition() ओरिएंटेशन के अनुसार लेआउट बदलता है (landscape में 2 कॉलम, portrait में 1) स्टेट को फिर से बनाए बिना, Relative/Gap और Screen का उपयोग करके। जैसा है वैसा ही कंपाइल होता है।

package com.exemplo;

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

public class MainWindow extends Window
{
   private final Component painel = new Component();
   private final Component listaBox = new Component();
   private final Component detalheBox = new Component();

   @Override
   public void onShow() throws Exception
   {
      super.onShow();
      setLayout(new VerticalLayout());

      listaBox.setLayout(new VerticalLayout());
      listaBox.add(LAY_AUTO, new Label("Lista"));

      detalheBox.setLayout(new VerticalLayout());
      detalheBox.add(LAY_AUTO, new Label("Detalhe"));

      boolean largo = Screen.minSize >= 600;   // breakpoint: छोटा किनारा (घुमाने पर स्थिर)
      add(LAY_AUTO, new Label(largo ? "Tablet/desktop" : "Telefone"));

      add(LAY_FILL, painel);
      onReposition();                           // प्रारंभिक व्यवस्था
   }

   @Override
   protected void onReposition() throws Exception
   {
      painel.removeAll();
      if (Screen.isLandscape) {                 // 2 कॉलम: सूची | विवरण
         painel.setLayout(new HorizontalLayout());
         painel.add(0.4f, listaBox);
         painel.add(0.6f, detalheBox);
      } else {                                  // 1 कॉलम
         painel.setLayout(new VerticalLayout());
         painel.add(LAY_FILL, listaBox);
      }
      painel.setValidLayout(false);
   }
}

नीचे दिए गए स्निपेट केवल मुख्य भाग दिखाते हैं (जो onShow() के अंदर जाता है)। चलाने के लिए, उन्हें ऊपर दिए गए MainWindow ढाँचे में रखें।

उपकरण

Relative.ofFont(1.5f);                     // फ़ॉन्ट/DPI के साथ स्केल करता है
Relative.ofScreen(0.8f, ScreenSize.MIN);   // छोटे किनारे का अंश (portrait/landscape के अनुसार ढलता है)
Gap.ofFont(0.5f);                          // स्केल होने वाला स्पेसिंग
add(LAY_FILL, comp);                       // प्रति अक्ष एक इलास्टिक क्षेत्र

Screen.minSize के साथ ब्रेकपॉइंट

छोटे वाले पक्ष का उपयोग करें — जब डिवाइस घूमता है तो स्थिर रहता है:

boolean largo = Screen.minSize >= 600;   // tablet/desktop

ओरिएंटेशन के अनुसार लेआउट बदलना — onReposition()

जब संरचना बदलनी चाहिए (portrait में 1 कॉलम, landscape में 2), तो onReposition() को ओवरराइड करें (resize पर बुलाया जाता है) — स्टेट को फिर से बनाए बिना:

@Override protected void onReposition() throws Exception {
   painel.removeAll();
   if (Screen.isLandscape) {                    // 2 कॉलम: सूची | विवरण
      painel.setLayout(new HorizontalLayout());
      painel.add(0.4f, listaBox);
      painel.add(0.6f, detalheBox);
   } else {                                      // 1 कॉलम
      painel.setLayout(new VerticalLayout());
      painel.add(LAY_FILL, listaBox);
   }
}

इस चरण में आप बनाते हैं

ऐप अनुकूली बन जाता है — portrait में फ़ोन, landscape में tablet/desktop — बिना किसी फिक्स्ड पिक्सेल के।

संक्षेप में

Relative/Gap/LAY_FILL = स्वचालित रिस्पॉन्सिव; Screen.minSize = ब्रेकपॉइंट; onReposition() स्टेट को संरक्षित रखते हुए लेआउट बदलता है।

अगले कदम

→ अपने ऐप का परीक्षण करना

यह भी देखें

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