Responsive Design — alapok, felületek adaptálása képernyőkhöz

Szerző: IT Sectr Megjelenés: 2026-02-25 Olvasási idő: 9 perc

Responsive Design – egy megközelítés a felületek építéséhez, ahol az elrendezés automatikusan alkalmazkodik az eszköz méretéhez, tájolásához és típusához. A mobil fejlesztésben a responsive design iOS-ben size classes, Android-ban configuration qualifiers segítségével valósul meg. A cikk az adaptív elrendezés elveit, mindkét platform eszközeit és kódpéldákat tárgyal.

Főbb pontok

  • Responsive Design – a felület adaptálása különböző képernyőméretekhez, tájolásokhoz és eszköztípusokhoz
  • Size Classes – iOS mechanizmus a kompakt vagy szabályos méret meghatározásához vízszintesen és függőlegesen
  • Configuration Qualifiers – Android erőforrások (layout-w600dp, values-sw600dp) különböző képernyőkonfigurációkhoz
  • Adaptív rács – elemek átrendezése a képernyő szélességének változásakor, nem csak nyújtás
  • Breakpoints – átmeneti pontok az elrendezési állapotok között (pl. 375 pt iPhone-hoz, 768 pt iPad-hez)

Mi az a Responsive Design?

Responsive Design – egy módszer a felületek építéséhez, ahol az elrendezés reagál a képernyő méretére, tájolására és rendelkezésre álló helyre, átrendezve az elemeket a funkcionalitás elvesztése nélkül. A kifejezést Ethan Marcotte javasolta 2010-ben webfejlesztéshez, de az elvek teljes mértékben alkalmazhatók natív mobil alkalmazásokra.

A mobil fejlesztésben a responsive design azt jelenti, hogy ugyanaz az alkalmazás minden eszközön helyesen jelenik meg: iPhone SE-től (375 pt) iPad Pro-ig (1024 pt portréban) és Android okostelefontól (360 dp) tabletig (800 dp). A legfontosabb elemek: rugalmas rács (flexible grid), adaptív képek és media queries keretrendszer szinten (size classes, qualifiers).

Az Apple Developer Documentation szerint az alkalmazásnak univerzálisnak kell lennie – minden eszközön működnie kell külön iPad fordítás nélkül. A Google Play az adaptive layouts használatát javasolja Jetpack WindowManager és canonical layouts segítségével. A tabletekhez való alkalmazkodás hiánya gyakori oka a negatív értékeléseknek.

Responsive vs Adaptive Design

A responsive és adaptive kifejezéseket gyakran összekeverik, bár különböző megközelítéseket írnak le. A Responsive design rugalmas rácshálózatot használ, amely folyamatosan alkalmazkodik a képernyő szélességéhez. Az Adaptive design rögzített elrendezéseket használ előre meghatározott breakpoints-okhoz – az alkalmazás ugrásszerűen vált közöttük.

JellemzőResponsive DesignAdaptive Design
MegközelítésFolyamatos áramlásDiszkrét váltások
RácsSzázalékos, fluidRögzített minden breakpoint-hoz
MegvalósításAuto Layout, Flexbox, ConstraintLayoutSize Classes, layout-w600dp, külön storyboard-ok
Layout tervek számaEgy, de rugalmasTöbb (phone portrait, phone landscape, tablet)

A gyakorlatban a mobil alkalmazások mindkét megközelítés kombinációját használják. Az alap rács responsive módon épül (Auto Layout constraint függőségekkel), és a breakpoint elérésekor (pl. szélesség > 600 pt) az elrendezés átvált egy adaptív verzióra más elemkompozícióval. Az iOS az Auto Layout-ot (responsive) kombinálja a Size Classes-szal (adaptive). Az Android a ConstraintLayout-ot (responsive) kombinálja a qualifier erőforrásokkal (adaptive).

iOS Size Classes: Compact és Regular

Size Classes – iOS mechanizmus, amely a rendelkezésre álló képernyőterületet két tengely mentén osztályozza: vízszintes és függőleges. Minden tengely lehet Compact (C) vagy Regular (R). A kombináció négy változatot ad az elrendezés adaptálásához: CR (általános iPhone portré), RR (iPad portré/fekvő), RC (iPhone fekvő Plus/Pro Max-en), CC (iPad Split View).

swift
// Size Classes meghatározása Swiftben
import UIKit

class AdaptiveViewController: UIViewController {

    override func traitCollectionDidChange(
        _ previousTraitCollection: UITraitCollection?
    ) {
        super.traitCollectionDidChange(previousTraitCollection)
        adjustLayout(for: traitCollection)
    }

    private func adjustLayout(for traits: UITraitCollection) {
        switch (traits.horizontalSizeClass, traits.verticalSizeClass) {
        case (.regular, .regular):
            showSplitView() // iPad — master-detail mutatása
        case (.compact, .regular):
            showStackedView() // iPhone portré — stack elrendezés
        case (.compact, .compact):
            showCompactView() // iPhone SE fekvő — minimalizált
        default:
            showDefaultView()
        }
    }

    private func showSplitView() {
        // UISplitViewController vagy HStack használata
    }

    private func showStackedView() {
        // Függőleges stack iPhone-hoz
    }

    private func showCompactView() {
        // Másodlagos elemek elrejtése, fő elemek mutatása
    }
}

Az Interface Builder-ben a Size Classes a „wAny hAny” panelen keresztül konfigurálható – a fejlesztő kiválaszt egy adott kombinációt (wRegular hRegular, wCompact hRegular) és constraint variációkat ad hozzá. A SwiftUI a @Environment(\.horizontalSizeClass) és @Environment(\.verticalSizeClass) segítségével reagál az alkalmazkodáshoz – tájolás vagy ablakméret változásakor a SwiftUI automatikusan újrarajzolja a nézetet.

swift
// Size Classes a SwiftUI-ban
import SwiftUI

struct ResponsiveView: View {
    @Environment(\.horizontalSizeClass) private var hSizeClass

    var body: some View {
        if hSizeClass == .regular {
            // iPad — vízszintes elrendezés oldalsó panellel
            HStack {
                SidebarView()
                    .frame(width: 300)
                ContentView()
            }
        } else {
            // iPhone — teljes képernyős függőleges stack
            VStack {
                ContentView()
            }
        }
    }
}

Android Configuration Qualifiers

Configuration Qualifiers – Android mechanizmus különböző erőforrások (layout, values, drawables) betöltéséhez az eszköz jellemzőitől függően. A minősítők közé tartozik a képernyő mérete (small, normal, large, xlarge), tájolás (port, land), minimális szélesség (swdp), elérhető szélesség (wdp) és magasság (hdp).

kotlin
// Eszközkonfiguráció meghatározása Kotlinban
class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val config = resources.configuration
        val screenWidthDp = config.screenWidthDp
        val screenHeightDp = config.screenHeightDp
        val orientation = config.orientation

        when {
            screenWidthDp >= 900 -> setContentView(R.layout.activity_main_tablet)
            screenWidthDp >= 600 -> setContentView(R.layout.activity_main_sw600)
            else -> setContentView(R.layout.activity_main_phone)
        }
    }

    override fun onConfigurationChanged(newConfig: Configuration) {
        super.onConfigurationChanged(newConfig)
        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            supportFragmentManager.beginTransaction()
                .replace(R.id.container, LandscapeFragment())
                .commit()
        }
    }
}

Erőforrás struktúra különböző képernyőkhöz: res/layout/activity_main.xml (telefon), res/layout-sw600dp/activity_main.xml (tablet 7"), res/layout-sw720dp/activity_main.xml (tablet 10"). Az Android automatikusan kiválasztja a megfelelő layout-ot a smallestWidth alapján – a képernyő minimális szélessége dp-ben, tájolástól függetlenül. A swdp minősítő – a legstabilabb alkalmazkodási módszer.

kotlin
// Jetpack Compose — WindowSizeClass az adaptációhoz
@Composable
fun ResponsiveScreen() {
    val windowSizeClass = currentWindowAdaptiveInfo().windowSizeClass

    when {
        windowSizeClass.windowSizeClass == WindowWidthSizeClass.EXPANDED -> {
            TabletLayout() // >= 840 dp
        }
        windowSizeClass.windowSizeClass == WindowWidthSizeClass.MEDIUM -> {
            MediumLayout() // 600–840 dp
        }
        else -> {
            CompactLayout() // < 600 dp
        }
    }
}

A Jetpack WindowManager (androidx.window könyvtár) WindowSizeClass-ot biztosít három szélességkategóriával: COMPACT (0–600 dp), MEDIUM (600–840 dp), EXPANDED (>840 dp). Ez egy modern alternatíva a régi qualifier mappákhoz. A Google ajánlja összehajtható eszközökhöz és tabletekhez való alkalmazkodáshoz.

Adaptív rács és breakpoints

Az adaptív rács a responsive design alapja. Rögzített méretek helyett az elemek százalékos arányokat, rugalmas korlátokat és intrinsic content size-t használnak. Breakpoints – képernyőszélességi pontok, amelyek elérésekor az elrendezés állapotok között vált.

BreakpointiOS Size ClassAndroid QualifierEszköz típus
0–374 pt / dpCompact widthiPhone SE, régi Android
375–599 pt / dpCompact widthsw320dpiPhone 14, Galaxy S24
600–839 pt / dpRegular widthsw600dpiPad mini, 7" tabletek
840+ pt / dpRegular widthsw720dpiPad Pro, 10" tabletek

A Google Material Design és Apple HIG által ajánlott breakpoints: 0–599 dp (telefon, egy oszlop), 600–839 dp (tablet, két oszlop, navigation rail), 840+ dp (tablet, három oszlop, navigation drawer). A breakpoints száma nem haladhatja meg a 4-et – túl sok átmeneti pont bonyolítja a karbantartást és tesztelést.

Az adaptív design legjobb gyakorlatai

A sikeres responsive design megköveteli az iOS és Android fejlesztők közössége által az elmúlt évtizedben kidolgozott szabályok betartását. Az alábbiakban a legfontosabb ajánlások találhatók az Apple HIG, Google Material Design és éles projektek tapasztalatai alapján.

  • Kezdje a legkisebb képernyővel – tervezze az elrendezést iPhone SE (375 pt) vagy Android compact (360 dp) méretre, majd adjon hozzá kiterjesztéseket nagyobb képernyőkhöz. Ez garantálja, hogy a kritikus tartalom mindenhová elfér
  • Használjon intrinsic content size-t – az UILabel, UIButton, ImageView természetes mérettel rendelkezik. Az Auto Layout és ConstraintLayout ezt használja automatikus pozicionáláshoz felesleges korlátok nélkül
  • Ne rejtse el a tartalmat kis képernyőkön – rejtés helyett rendezze át (reflow). A felhasználónak hozzá kell férnie ugyanahhoz a funkcióhoz, csak más sorrendben
  • Tesztelje minden size class-on – az iOS szimulátor lehetővé teszi a Size Classes váltását újraindítás nélkül. Az Android Emulator különböző eszközprofilokat biztosít. Kötelezően tesztelje tableteken és összehajtható eszközökön
  • Material 3 Adaptive Layout – a Google kész canonical layouts-okat biztosít lista/részletek, eszköztárak és navigáció számára. Használja ezeket a saját minták kitalálása helyett

Az adaptív design fő elve: a tartalom határozza meg az elrendezést, nem fordítva. Ha az iPad ugyanazt a kártyaköteget jeleníti meg, mint az iPhone, csak szélességben kinyújtva – az nem responsive design. A Responsive design újragondolja a kompozíciót: iPhone-on – függőleges görgetés, iPad-en – master-detail oldalsó panellel.

Gyakran Ismételt Kérdések

Miben különbözik a Responsive Design az Adaptive Layout-tól?

Responsive Design rugalmas rácshálózatot használ, amely fokozatosan alkalmazkodik a képernyő szélességéhez. Adaptive Layout rögzített elrendezések között vált a breakpoint pontokban. A gyakorlatban mindkét megközelítést kombinálják: responsive alap rács + adaptív váltások radikális változásokhoz (telefon vs tablet).

Milyen Size Classes léteznek iOS-ben?

Az iOS két tengelyt használ: vízszintes (Compact/Regular) és függőleges (Compact/Regular). iPhone portréban – Compact width, Regular height (CR). iPad – Regular width, Regular height (RR). iPhone Plus/Pro Max fekvőben – Regular width, Compact height (RC). A fejlesztő minden kombinációhoz constraint variációkat állít be.

Mi az a sw600dp Android-ban?

sw600dp (smallestWidth 600 dp) – egy Android erőforrás minősítő, ami azt jelenti, hogy az eszköz képernyőjének minimális szélessége legalább 600 dp. Alternatív layout-ok betöltésére szolgál tabletekhez (7" és nagyobb). A tájolás nem számít – a sw a képernyő legkisebb oldalát veszi figyelembe.

Hogyan teszteljük az alkalmazás alkalmazkodóképességét?

iOS-en használjon szimulátort különböző Size Classes-szal és Preview-t SwiftUI-ban különböző méretű eszközökkel. Android-on – eszközprofilokat az emulátorban (Pixel 5, Pixel C, Galaxy Tab) és Layout Validation-t Android Studio-ban. Mindkét platformon kötelezően teszteljen fizikai iPad/Android tableten és összehajtható eszközön.

Mik azok a canonical layouts a Material Design-ban?

Canonical layouts – kész adaptív kompozíciós minták a Google Material Design 3-tól: list-detail (lista + részletek), feed (kártyafolyam), supporting pane (fő tartalom + műveleti panel). Minden mintának három változata van (compact/medium/expanded) és automatikusan alkalmazkodik a WindowSizeClass-hoz.

Összefoglalás

  • Responsive Design – az elrendezés adaptálása a képernyő méretéhez és tájolásához rugalmas rácsok és breakpoints segítségével
  • Size Classes iOS-ben (Compact/Regular) meghatározzák az elrendezést iPhone, iPad és Split View számára
  • Configuration Qualifiers Android-ban (swdp, wdp, layout-land) erőforrásokat töltenek be az eszközhöz
  • Jetpack WindowManager WindowSizeClass-t biztosít három kategóriával: COMPACT, MEDIUM, EXPANDED
  • Breakpoints: 0–599 dp (telefon), 600–839 dp (tablet), 840+ dp (széles tablet)
  • Responsive ≠ egyszerű nyújtás – elemek átrendezése szükséges (reflow), nem tartalom elrejtése
  • Tesztelés minden eszköztípuson, beleértve a tableteket és összehajtható eszközöket, kötelező fejlesztési szakasz

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is