Responsive Design — basis, aanpassing van interfaces aan schermen

Auteur: IT Sectr Gepubliceerd: 2026-02-25 Leestijd: 9 min

Responsive Design – een benadering voor het bouwen van interfaces waarbij de lay-out zich automatisch aanpast aan de grootte, oriëntatie en het type apparaat. In mobiele ontwikkeling wordt responsive design geïmplementeerd via size classes in iOS en configuration qualifiers in Android. Het artikel behandelt de principes van adaptieve lay-out, tools van beide platforms en codevoorbeelden.

Belangrijkste

  • Responsive Design – aanpassing van de interface aan verschillende schermformaten, oriëntaties en apparaattypes
  • Size Classes – iOS-mechanisme voor het bepalen van compacte of reguliere grootte horizontaal en verticaal
  • Configuration Qualifiers – Android-bronnen (layout-w600dp, values-sw600dp) voor verschillende schermconfiguraties
  • Adaptief raster – herschikking van elementen bij verandering van schermbreedte, niet alleen uitrekken
  • Breakpoints – overgangspunten tussen lay-outstatussen (bijv. 375 pt voor iPhone, 768 pt voor iPad)

Wat is Responsive Design?

Responsive Design – een methode voor het bouwen van interfaces waarbij de lay-out reageert op de schermgrootte, oriëntatie en beschikbare ruimte door elementen te herschikken zonder functionaliteitsverlies. De term werd in 2010 door Ethan Marcotte voorgesteld voor webdesign, maar de principes zijn volledig van toepassing op native mobiele applicaties.

In mobiele ontwikkeling betekent responsive design dat dezelfde applicatie correct wordt weergegeven op alle apparaten: van iPhone SE (375 pt) tot iPad Pro (1024 pt in portret) en van Android-smartphone (360 dp) tot tablet (800 dp). De belangrijkste elementen zijn flexibel raster (flexible grid), adaptieve afbeeldingen en media queries op framework-niveau (size classes, qualifiers).

Volgens Apple Developer Documentation moet de applicatie universeel zijn – werkend op alle apparaten zonder aparte compilatie voor iPad. Google Play beveelt het gebruik van adaptive layouts via Jetpack WindowManager en canonical layouts aan. Gebrek aan aanpassing aan tablets is een veelvoorkomende oorzaak van negatieve beoordelingen.

Responsive vs Adaptive Design

De termen responsive en adaptive worden vaak verward, hoewel ze verschillende benaderingen beschrijven. Responsive design gebruikt een flexibel raster dat continu aanpast aan de schermbreedte. Adaptive design gebruikt vaste lay-outs voor vooraf gedefinieerde breakpoints – de applicatie schakelt schoksgewijs tussen deze lay-outs.

KenmerkResponsive DesignAdaptive Design
BenaderingContinue stroomDiscrete schakelingen
RasterProcentueel, fluidVast voor elke breakpoint
ImplementatieAuto Layout, Flexbox, ConstraintLayoutSize Classes, layout-w600dp, aparte storyboards
Aantal ontwerplay-outsEén, maar flexibelMeerdere (phone portrait, phone landscape, tablet)

In de praktijk gebruiken mobiele applicaties een combinatie van beide benaderingen. Het basisraster wordt responsive gebouwd (Auto Layout met constraint-afhankelijkheden), en bij het bereiken van een breakpoint (bijv. breedte > 600 pt) schakelt de lay-out over naar een adaptieve versie met een andere compositie. iOS combineert Auto Layout (responsive) met Size Classes (adaptive). Android combineert ConstraintLayout (responsive) met qualifier-bronnen (adaptive).

iOS Size Classes: Compact en Regular

Size Classes – iOS-mechanisme dat de beschikbare schermruimte classificeert op twee assen: horizontaal en verticaal. Elke as kan Compact (C) of Regular (R) zijn. De combinatie geeft vier varianten voor lay-outaanpassing: CR (normale iPhone portret), RR (iPad portret/landschap), RC (iPhone landschap op Plus/Pro Max), CC (iPad Split View).

swift
// Size Classes definiëren in Swift
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 tonen
        case (.compact, .regular):
            showStackedView() // iPhone portret — stack lay-out
        case (.compact, .compact):
            showCompactView() // iPhone SE landschap — geminimaliseerd
        default:
            showDefaultView()
        }
    }

    private func showSplitView() {
        // We gebruiken UISplitViewController of HStack
    }

    private func showStackedView() {
        // Verticale stack voor iPhone
    }

    private func showCompactView() {
        // Verberg secundaire elementen, toon hoofd elementen
    }
}

In Interface Builder worden Size Classes geconfigureerd via het paneel „wAny hAny” – de ontwikkelaar selecteert een specifieke combinatie (wRegular hRegular, wCompact hRegular) en voegt constraint-variaties toe. SwiftUI gebruikt @Environment(\.horizontalSizeClass) en @Environment(\.verticalSizeClass) voor reactieve aanpassing – bij verandering van oriëntatie of venstergrootte hertekent SwiftUI automatisch de view.

swift
// Size Classes in SwiftUI
import SwiftUI

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

    var body: some View {
        if hSizeClass == .regular {
            // iPad — horizontale lay-out met zijpaneel
            HStack {
                SidebarView()
                    .frame(width: 300)
                ContentView()
            }
        } else {
            // iPhone — verticale stack op volledig scherm
            VStack {
                ContentView()
            }
        }
    }
}

Android Configuration Qualifiers

Configuration Qualifiers – Android-mechanisme voor het laden van verschillende bronnen (layout, values, drawables) afhankelijk van de apparaatkenmerken. De kwalificatoren omvatten schermgrootte (small, normal, large, xlarge), oriëntatie (port, land), minimale breedte (swdp), beschikbare breedte (wdp) en hoogte (hdp).

kotlin
// Apparaatconfiguratie definiëren in Kotlin
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()
        }
    }
}

Bronstructuur voor verschillende schermen: res/layout/activity_main.xml (telefoon), res/layout-sw600dp/activity_main.xml (tablet 7"), res/layout-sw720dp/activity_main.xml (tablet 10"). Android selecteert automatisch de juiste lay-out op basis van smallestWidth – de minimale schermbreedte in dp ongeacht oriëntatie. De swdp kwalificator – de meest stabiele aanpassingsmethode.

kotlin
// Jetpack Compose — WindowSizeClass voor aanpassing
@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
        }
    }
}

Jetpack WindowManager (bibliotheek androidx.window) biedt WindowSizeClass met drie breedtecategorieën: COMPACT (0–600 dp), MEDIUM (600–840 dp), EXPANDED (>840 dp). Dit is een modern alternatief voor oude qualifier-mappen. Aanbevolen door Google voor aanpassing aan opvouwbare apparaten en tablets.

Adaptief raster en breakpoints

Het adaptieve raster is de basis van responsive design. In plaats van vaste afmetingen gebruiken elementen procentuele verhoudingen, flexibele beperkingen en intrinsic content size. Breakpoints – schermbreedtepunten waarbij de lay-out tussen statussen schakelt.

BreakpointiOS Size ClassAndroid QualifierApparaattype
0–374 pt / dpCompact widthiPhone SE, oude Android
375–599 pt / dpCompact widthsw320dpiPhone 14, Galaxy S24
600–839 pt / dpRegular widthsw600dpiPad mini, tablets 7"
840+ pt / dpRegular widthsw720dpiPad Pro, tablets 10"

Aanbevolen breakpoints volgens Google Material Design en Apple HIG: 0–599 dp (telefoon, één kolom), 600–839 dp (tablet, twee kolommen, navigation rail), 840+ dp (tablet, drie kolommen, navigation drawer). Het aantal breakpoints mag niet meer dan 4 bedragen – te veel overgangspunten compliceren onderhoud en testen.

Beste praktijken voor adaptief ontwerp

Succesvol responsive design vereist het naleven van een reeks regels die de afgelopen tien jaar door de iOS- en Android-ontwikkelaarsgemeenschap zijn ontwikkeld. Hieronder staan de belangrijkste aanbevelingen op basis van Apple HIG, Google Material Design en ervaring met productieprojecten.

  • Begin met het kleinste scherm – ontwerp de lay-out voor iPhone SE (375 pt) of Android compact (360 dp) en voeg vervolgens uitbreidingen voor grotere schermen toe. Dit garandeert dat kritieke inhoud overal past
  • Gebruik intrinsic content size – UILabel, UIButton, ImageView hebben een natuurlijke grootte. Auto Layout en ConstraintLayout gebruiken dit voor automatische positionering zonder onnodige beperkingen
  • Verberg geen inhoud op kleine schermen – in plaats van verbergen, herschik (reflow). De gebruiker moet toegang hebben tot dezelfde functionaliteit, alleen in een andere volgorde
  • Test op alle size classes – de iOS-simulator kan Size Classes wijzigen zonder herstart. De Android Emulator biedt verschillende apparaatprofielen. Test verplicht op tablets en opvouwbare apparaten
  • Material 3 Adaptive Layout – Google biedt kant-en-klare canonical layouts voor lijst/details, gereedschapspanelen en navigatie. Gebruik deze in plaats van het uitvinden van eigen patronen

Het belangrijkste principe van adaptief ontwerp: inhoud bepaalt de lay-out, niet andersom. Als op iPad dezelfde stapel kaarten wordt weergegeven als op iPhone, maar gewoon uitgerekt in de breedte – dan is dat geen responsive design. Responsive design heroverweegt de compositie: op iPhone – verticaal scrollen, op iPad – master-detail met zijpaneel.

Veelgestelde vragen

Wat is het verschil tussen Responsive Design en Adaptive Layout?

Responsive Design gebruikt een flexibel raster dat geleidelijk aanpast aan de schermbreedte. Adaptive Layout schakelt tussen vaste lay-outs op breakpoint-punten. In de praktijk worden beide benaderingen gecombineerd: een responsive basisraster + adaptieve schakelingen voor ingrijpende veranderingen (telefoon vs tablet).

Welke Size Classes bestaan er in iOS?

iOS gebruikt twee assen: horizontaal (Compact/Regular) en verticaal (Compact/Regular). iPhone in portret – Compact width, Regular height (CR). iPad – Regular width, Regular height (RR). iPhone Plus/Pro Max in landschap – Regular width, Compact height (RC). De ontwikkelaar stelt constraint-variaties in voor elke combinatie.

Wat is sw600dp in Android?

sw600dp (smallestWidth 600 dp) – een Android-bronkwalificator die aangeeft dat de minimale schermbreedte van het apparaat ten minste 600 dp is. Gebruikt voor het laden van alternatieve lay-outs voor tablets (7" en groter). Oriëntatie maakt geen verschil – sw houdt rekening met de kleinste zijde van het scherm.

Hoe test ik de aanpasbaarheid van een applicatie?

Gebruik op iOS de simulator met verschillende Size Classes en Preview in SwiftUI met apparaten van verschillende formaten. Op Android – apparaatprofielen in de emulator (Pixel 5, Pixel C, Galaxy Tab) en Layout Validation in Android Studio. Test op beide platforms verplicht op een fysieke iPad/Android-tablet en een opvouwbaar apparaat.

Wat zijn canonical layouts in Material Design?

Canonical layouts – kant-en-klare adaptieve compositiepatronen van Google Material Design 3: list-detail (lijst + details), feed (kaartenfeed), supporting pane (hoofdinhoud + actiepaneel). Elk patroon heeft drie varianten (compact/medium/expanded) en past zich automatisch aan de WindowSizeClass aan.

Samenvatting

  • Responsive Design – aanpassing van de lay-out aan schermgrootte en oriëntatie via flexibele rasters en breakpoints
  • Size Classes in iOS (Compact/Regular) bepalen de lay-out voor iPhone, iPad en Split View
  • Configuration Qualifiers in Android (swdp, wdp, layout-land) laden bronnen voor het apparaat
  • Jetpack WindowManager biedt WindowSizeClass met drie categorieën: COMPACT, MEDIUM, EXPANDED
  • Breakpoints: 0–599 dp (telefoon), 600–839 dp (tablet), 840+ dp (brede tablet)
  • Responsive ≠ simpel uitrekken – herschikking van elementen (reflow) is vereist, niet het verbergen van inhoud
  • Testen op alle apparaattypes, inclusief tablets en opvouwbare apparaten, is een verplichte ontwikkelingsfase

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook