Responsive Design ist ein Ansatz zum Aufbau von Oberflächen, bei dem sich das Layout automatisch an die Größe, Ausrichtung und den Gerätetyp anpasst. In der mobilen Entwicklung wird Responsive Design durch Size Classes in iOS und Configuration Qualifiers in Android implementiert. Der Artikel behandelt die Prinzipien des adaptiven Layouts, die Werkzeuge beider Plattformen und Codebeispiele.
Wichtige Erkenntnisse
Responsive Design ist eine Methode zum Aufbau von Oberflächen, bei der das Layout auf Bildschirmgröße, Ausrichtung und verfügbaren Platz reagiert und Elemente ohne Funktionsverlust neu anordnet. Der Begriff wurde 2010 von Ethan Marcotte für Webdesign geprägt, aber die Prinzipien sind vollständig auf native mobile Anwendungen anwendbar.
In der mobilen Entwicklung bedeutet Responsive Design, dass dieselbe Anwendung auf allen Geräten korrekt angezeigt wird: vom iPhone SE (375 pt) bis zum iPad Pro (1024 pt im Hochformat) und vom Android-Smartphone (360 dp) bis zum Tablet (800 dp). Die Schlüsselelemente sind flexibles Raster, adaptive Bilder und Media Queries auf Framework-Ebene (Size Classes, Qualifiers).
Laut Apple Developer Documentation sollte die Anwendung universell sein — auf allen Geräten ohne separaten iPad-Build funktionieren. Google Play empfiehlt die Verwendung adaptiver Layouts über Jetpack WindowManager und Canonical Layouts. Fehlende Tablet-Anpassung ist ein häufiger Grund für negative Bewertungen.
Die Begriffe Responsive und Adaptive werden oft verwechselt, obwohl sie unterschiedliche Ansätze beschreiben. Responsive Design verwendet ein flexibles Raster, das sich kontinuierlich an die Bildschirmbreite anpasst. Adaptive Design verwendet feste Layouts für vordefinierte Breakpoints — die Anwendung wechselt abrupt zwischen ihnen.
| Merkmal | Responsive Design | Adaptive Design |
|---|---|---|
| Ansatz | Fließender Übergang | Diskrete Wechsel |
| Raster | Prozentbasiert, fluid | Fest für jeden Breakpoint |
| Implementierung | Auto Layout, Flexbox, ConstraintLayout | Size Classes, layout-w600dp, separate Storyboards |
| Anzahl der Design-Layouts | Eines, aber flexibel | Mehrere (Hochformat, Querformat, Tablet) |
In der Praxis verwenden mobile Apps eine Kombination beider Ansätze. Das Basisraster wird responsiv aufgebaut (Auto Layout mit Constraint-Abhängigkeiten), und beim Erreichen eines Breakpoints (z. B. Breite > 600 pt) wechselt das Layout auf eine adaptive Version mit einer anderen Elementanordnung. iOS kombiniert Auto Layout (responsive) mit Size Classes (adaptive). Android kombiniert ConstraintLayout (responsive) mit Qualifier-Ressourcen (adaptive).
Size Classes sind ein iOS-Mechanismus, der den verfügbaren Bildschirmplatz entlang zweier Achsen klassifiziert: horizontal und vertikal. Jede Achse kann Compact (C) oder Regular (R) sein. Die Kombination ergibt vier Layout-Anpassungsoptionen: CR (typisches iPhone Hochformat), RR (iPad Hoch-/Querformat), RC (iPhone Querformat bei Plus/Pro Max), CC (iPad Split View).
// Definition von Size Classes 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 anzeigen
case (.compact, .regular):
showStackedView() // iPhone Hochformat — gestapeltes Layout
case (.compact, .compact):
showCompactView() // iPhone SE Querformat — minimiert
default:
showDefaultView()
}
}
private func showSplitView() {
// Verwendung von UISplitViewController oder HStack
}
private func showStackedView() {
// Vertikaler Stack für iPhone
}
private func showCompactView() {
// Sekundäre Elemente ausblenden, primäre anzeigen
}
}Im Interface Builder werden Size Classes über das Bedienfeld „wAny hAny" konfiguriert — der Entwickler wählt eine bestimmte Kombination (wRegular hRegular, wCompact hRegular) und fügt Constraint-Variationen hinzu. SwiftUI verwendet @Environment(\.horizontalSizeClass) und @Environment(\.verticalSizeClass) für reaktive Anpassung — bei Änderung der Ausrichtung oder Fenstergröße zeichnet SwiftUI die Ansicht automatisch neu.
// Size Classes in SwiftUI
import SwiftUI
struct ResponsiveView: View {
@Environment(\.horizontalSizeClass) private var hSizeClass
var body: some View {
if hSizeClass == .regular {
// iPad — horizontales Layout mit Seitenleiste
HStack {
SidebarView()
.frame(width: 300)
ContentView()
}
} else {
// iPhone — vertikaler Vollbild-Stack
VStack {
ContentView()
}
}
}
}Configuration Qualifiers sind ein Android-Mechanismus zum Laden verschiedener Ressourcen (Layout, Values, Drawables) basierend auf Geräteeigenschaften. Zu den Qualifikatoren gehören Bildschirmgröße (small, normal, large, xlarge), Ausrichtung (port, land), Mindestbreite (sw<N>dp), verfügbare Breite (w<N>dp) und Höhe (h<N>dp).
// Gerätekonfigurationserkennung 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()
}
}
}Ressourcenstruktur für verschiedene Bildschirme: res/layout/activity_main.xml (Telefon), res/layout-sw600dp/activity_main.xml (7-Zoll-Tablet), res/layout-sw720dp/activity_main.xml (10-Zoll-Tablet). Android wählt automatisch das richtige Layout basierend auf smallestWidth — der minimalen Bildschirmbreite in dp unabhängig von der Ausrichtung. Der Qualifier sw<N>dp ist die stabilste Anpassungsmethode.
// Jetpack Compose — WindowSizeClass zur Anpassung
@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 (Bibliothek androidx.window) bietet WindowSizeClass mit drei Breitenkategorien: COMPACT (0–600 dp), MEDIUM (600–840 dp), EXPANDED (>840 dp). Dies ist eine moderne Alternative zu alten Qualifier-Ordnern. Von Google für die Anpassung an faltbare Geräte und Tablets empfohlen.
Das adaptive Raster ist die Grundlage des Responsive Design. Anstelle fester Größen verwenden Elemente prozentuale Verhältnisse, flexible Constraints und intrinsische Inhaltsgröße. Breakpoints sind Bildschirmbreitenpunkte, bei denen das Layout zwischen Zuständen wechselt.
| Breakpoint | iOS Size Class | Android Qualifier | Gerätetyp |
|---|---|---|---|
| 0–374 pt / dp | Compact width | — | iPhone SE, älteres Android |
| 375–599 pt / dp | Compact width | sw320dp | iPhone 14, Galaxy S24 |
| 600–839 pt / dp | Regular width | sw600dp | iPad mini, 7-Zoll-Tablets |
| 840+ pt / dp | Regular width | sw720dp | iPad Pro, 10-Zoll-Tablets |
Empfohlene Breakpoints von Google Material Design und Apple HIG: 0–599 dp (Telefon, eine Spalte), 600–839 dp (Tablet, zwei Spalten, Navigation Rail), 840+ dp (Tablet, drei Spalten, Navigation Drawer). Die Anzahl der Breakpoints sollte 4 nicht überschreiten — übermäßige Übergangspunkte erschweren Wartung und Tests.
Erfolgreiches Responsive Design erfordert die Einhaltung einer Reihe von Regeln, die von der iOS- und Android-Entwickler-Community im letzten Jahrzehnt entwickelt wurden. Nachfolgend die wichtigsten Empfehlungen basierend auf Apple HIG, Google Material Design und Produktionsprojekterfahrung.
Das Hauptprinzip des adaptiven Designs: Inhalt definiert Layout, nicht umgekehrt. Wenn ein iPad denselben Kartenstapel wie ein iPhone anzeigt, nur breiter gestreckt — das ist kein Responsive Design. Responsive Design denkt das Layout neu: auf iPhone — vertikales Scrollen, auf iPad — Master-Detail mit Seitenleiste.
Häufig gestellte Fragen
Responsive Design verwendet ein flexibles Raster, das sich nahtlos an die Bildschirmbreite anpasst. Adaptive Layout wechselt zwischen festen Layouts an Breakpoint-Punkten. In der Praxis werden beide Ansätze kombiniert: responsives Basisraster + adaptive Wechsel für grundlegende Änderungen (Telefon vs. Tablet).
iOS verwendet zwei Achsen: horizontal (Compact/Regular) und vertikal (Compact/Regular). iPhone im Hochformat — Compact Width, Regular Height (CR). iPad — Regular Width, Regular Height (RR). iPhone Plus/Pro Max im Querformat — Regular Width, Compact Height (RC). Der Entwickler legt Constraint-Variationen für jede Kombination fest.
sw600dp (smallestWidth 600 dp) ist ein Android-Ressourcenqualifikator, der bedeutet, dass die minimale Bildschirmbreite des Geräts mindestens 600 dp beträgt. Es wird verwendet, um alternative Layouts für Tablets (7" und größer) zu laden. Die Ausrichtung hat keinen Einfluss — sw berücksichtigt die kleinste Bildschirmseite.
Verwenden Sie unter iOS den Simulator mit verschiedenen Size Classes und die SwiftUI Preview mit Geräten unterschiedlicher Größe. Unter Android — Geräteprofile im Emulator (Pixel 5, Pixel C, Galaxy Tab) und Layout Validation in Android Studio. Testen Sie auf beiden Plattformen unbedingt auf einem physischen iPad/Android-Tablet und einem faltbaren Gerät.
Canonical Layouts sind vorgefertigte adaptive Layoutmuster von Google Material Design 3: List-Detail, Feed (Karten-Feed), Supporting Pane (Hauptinhalt + Aktionsbereich). Jedes Muster hat drei Varianten (Compact/Medium/Expanded) und passt sich automatisch an WindowSizeClass an.
Zusammenfassung
Wir entwickeln eine mobile Applikation schlüsselfertig
IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.
Lesen Sie auch