UI/UX и компоненте у мобилном развоју: шта су, врсте и како их користити

Аутор: IT Sectr Објављено: 2026-02-23 Време читања: 11 мин

Mobile app interface development starts with understanding UI components and frameworks. This article covers Material Design, Human Interface Guidelines, SwiftUI, Jetpack Compose, Flutter Widgets, the system of measurement units (dp, sp, pt, px), and all key UI elements — from НавигацијаView and RecyclerView to Safe Area and Тамни режим. The material is aimed at beginners transitioning from theory to their first projects. For more details, see the official Material Design documentation.

Главне тачке

  • Material Design (Google) and Human Interface Guidelines (Apple) are the two main design systems for mobile platforms
  • Declarative frameworks SwiftUI and Jetpack Compose replace classic UIView and XML layouts
  • Flutter uses its own Widgets library — everything from text to animation is a widget
  • dp, sp, and pt units ensure correct display on screens with different densities (mdpi–xxxhdpi)
  • Приступачност (a11y) and internationalization (i18n) are mandatory requirements for publishing in app stores

Дизајн системи: Material Design and Human Interface Guidelines

Each platform offers its own set of rules and components. For Android, this is Material Design, developed by Google in 2014. Material Design uses the metaphor of physical material — layers, shadows (Elevation), animated transitions, and adaptive layouts. Key principles include hierarchy through elevation, meaningful motion, and adaptability across different form factors. We recommend exploring Material Design 3 (Material You) — the latest version with dynamic theme and personalized colors.

Apple offers Human Interface Guidelines (HIG) — a set of rules for iOS, iPadOS, macOS, watchOS, and tvOS. HIG emphasizes clear typography (San Francisco), Safe Area to account for the Notch and Dynamic Island, gesture-based navigation, and consistency. Unlike Material Design, HIG does not use "layers" and Elevation — instead, it uses blur (vibrancy), shadows, and subtle separators. The full HIG documentation is regularly updated with new iOS releases.

At IT Sectr, we use both design systems depending on the client's platform. For cross-platform Flutter projects, we develop a unified design system that combines the best practices of Material Design and HIG. This approach preserves a native UX on each platform without code duplication.

Декларативни UI оквири: SwiftUI and Jetpack Compose

The traditional approach to building UI is imperative layout via XML (Android) or Interface Builder / code (iOS). The modern alternative is declarative frameworks, where the developer describes how the interface should look in each state, and the framework handles updates.

Jetpack Compose (Android)

Jetpack Compose is a modern toolkit from Google for building native UI in Kotlin. Instead of XML layouts, Kotlin composable functions (@Composable) are used. Compose is fully declarative: when data changes, only the changed parts of the screen are redrawn. Example of a simple screen with text and a button:

kotlin
@Composable
fun GreetingScreen() {
    var count = remember { mutableStateOf(0) }
    Column {
        Text(text = "Нажато: $count")
        Button(onClick = { count++ }) {
            Text("Нажми меня")
        }
    }
}

SwiftUI (iOS)

SwiftUI is Apple's declarative framework introduced in 2019. It works across all Apple platforms (iOS, iPadOS, macOS, watchOS, tvOS) through a unified API. SwiftUI uses View structures, @State and @Binding properties for data management, and modifiers for styling. The equivalent of the example above in SwiftUI:

swift
struct GreetingView: View {
    @State private var count = 0
    var body: some View {
        VStack {
            Text("Нажато: \(count)")
            Button("Нажми меня") {
                count += 1
            }
        }
    }
}

Flutter Widgets

Flutter from Google uses its own widget library. Everything in Flutter is a widget — from padding to an entire screen. Widgets are divided into StatelessWidget (immutable) and StatefulWidget (with state). Basic containers are Container, Row, Column, Stack. Flutter does not use native platform components — it draws everything through the Skia Engine, ensuring a consistent look on both Android and iOS.

dart
class GreetingWidget extends StatefulWidget {
    @override
    State createState() => _GreetingWidgetState();
}
class _GreetingWidgetState extends State<GreetingWidget> {
    int count = 0;
    @override
    Widget build(BuildContext context) {
        return Column(
            children: [
                Text('Нажато: $count'),
                ElevatedButton(
                    onPressed: () => setState(() => count++),
                    child: Text('Нажми меня'),
                ),
            ],
        );
    }
}

Изворни UI компоненти for Android and iOS

Despite the spread of declarative frameworks, understanding native components remains important for supporting legacy projects and deep customization.

Навигација

Навигација in Android is built on Activity (screen activities) and Fragment (fragments within one Activity). Jetpack Навигација Component simplifies transitions between screens through a navigation graph. In iOS, navigation is implemented via НавигацијаController — a stack of controllers with animated transitions. Tab Bar and Bottom Навигација enable switching between main sections of the app. Drawer (side menu) and Toolbar/ActionBar are used for additional actions. Android Навигација Component is recommended for all new projects.

Листе

For displaying large amounts of data, Android uses RecyclerView — an efficient container with ViewHolder reuse. The iOS equivalents are UITableView (vertical lists) and UICollectionView (grids). Jetpack Compose offers LazyColumn and LazyVerticalGrid, while SwiftUI provides List and LazyVStack/LazyHStack. The key advantage of Lazy components is rendering only visible elements.

Платформа Компонента листе Компонента мреже Лења учитавања
Android (View System)RecyclerView + ListViewRecyclerView GridLayoutManagerДа
Android (Compose)LazyColumnLazyVerticalGridДа
iOS (UIKit)UITableViewUICollectionViewДа
iOS (SwiftUI)List / LazyVStackLazyVGridДа
FlutterListView.builderGridView.builderДа

Распореди и позиционирање

The Android View System offers several Layout containers: ConstraintLayout (flexible constraint system), LinearLayout (linear arrangement), RelativeLayout (relative positioning), FrameLayout (layer stacking). In iOS, Core Auto Layout uses a system of constraints (NSLayoutConstraint) to describe element positioning. SwiftUI and Flutter use VStack/HStack/ZStack and Row/Column/Stack respectively.

Мерне јединице and Респонзивни распоред

Mobile device UI components are displayed taking into account different pixel densities. To make the interface look the same on all screens, density-independent units are used.

Јединица Платформа Опис
dpAndroidDensity-independent Pixels — abstract unit equal to 1px on an mdpi screen
spAndroidScale-independent Pixels — for fonts, respects user font size settings
ptiOSPoints — typographic unit, 1pt = 1px on a 1x (non-Retina) screen
pxСвеPhysical screen pixels — not recommended for layout due to varying density

Screen densities are classified as: mdpi (160 dpi, 1x), hdpi (240 dpi, 1.5x), xhdpi (320 dpi, 2x), xxhdpi (480 dpi, 3x), xxxhdpi (640 dpi, 4x). When preparing images, you need to create resources for all densities: icon.png, icon_hdpi.png, icon_xhdpi.png, and so on. Vector formats (VectorDrawable in Android, SF Symbols in iOS) solve the problem of multiple raster resources.

At IT Sectr, we use a scaling factor for exporting icons from Figma: we export at 1x, 2x, 3x for iOS and mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi for Android. This ensures sharp display on all devices including tablets and foldable smartphones.

Савремени UI концепти: Тамни режим, Safe Area, Приступачност

Modern mobile app UI components must support a number of standards, without which the user experience would be incomplete.

Тамни режим / Светли режим

Тамни режим is a mandatory option in modern applications. Material Design 3 and iOS 13+ provide built-in dark theme support. It is important not to invert colors but to use separate color palettes: dark background, light text, reduced contrast for secondary elements. Automatic switching can be tied to the system theme of the device.

Safe Area and Notch / Dynamic Island Support

Modern iPhones have a Notch (cutout for the front camera) and Dynamic Island. Android devices also have cutouts and rounded corners (Corner Radius). Safe Area is the screen area guaranteed to be free of system elements (status bar, home indicator), navigation bar, and cutouts. iOS automatically applies Safe Area Insets; Android requires explicit checking via WindowInsets or DisplayCutout.

Приступачност (a11y)

Приступачност ensures app usability for people with disabilities. Key requirements: TalkBack (Android) and VoiceOver (iOS) support, correct contentОпис for ImageView, sufficient color contrast (minimum 4.5:1 for text), Dynamic Type (iOS) support for font scaling, vision-free navigation, and gesture alternatives. WCAG 2.1 is the international accessibility standard.

Globalization and Localization (i18n / l10n)

Internationalization (i18n) is preparing the app to support multiple languages and regional formats. Localization (l10n) is translating strings, dates, currencies, and cultural specifics. Android uses resource directories (values-ru, values-de), iOS uses Localizable.strings and XLIFF. Flutter supports flutter_localizations with ARB translation files.

Gestures and Interaction

Touch interaction includes many gestures: Tap, Long Press, Swipe, Pinch-to-Zoom, Pull-to-Refresh, Drag-and-Drop. Android uses GestureDetector, iOS uses UIGestureRecognizer. iOS also supports 3D Touch (Force Touch) and Haptic Touch with haptic feedback via the Taptic Engine.

Често постављана питања

What is the difference between Material Design and Human Interface Guidelines?

Material Design (Google) uses a "material" metaphor with shadows, layers, and animated transitions, while HIG (Apple) relies on clarity, Safe Area, and Dynamic Type. Material Design is recommended for Android, HIG for iOS. The choice of design system also affects navigation: Android favors Bottom Навигација and Навигација Drawer, while iOS favors Tab Bar and Навигација Controller.

Which to choose: Jetpack Compose or SwiftUI?

Jetpack Compose is a declarative framework for Android, SwiftUI is for iOS. Both use a declarative approach and simplify UI development. Compose is more tightly integrated with Kotlin and Android Architecture Components, SwiftUI with Combine and the entire Apple ecosystem.

What is responsive design in mobile applications?

Responsive design is an approach where the interface adapts to screen size, orientation, and pixel density. Relative units (dp, sp, pt), Auto Layout, or ConstraintLayout are used. Tablets, foldable devices, and desktop windows (iPad Stage Manager) require additional adaptations: Split View, master-detail layout.

What measurement units are used in mobile UI?

dp (density-independent pixels) and sp (scale-independent pixels) on Android, pt (points) on iOS. px are hardware pixels. dp and pt provide the same physical size on different screen densities: mdpi (1x), hdpi (1.5x), xhdpi (2x), xxhdpi (3x), xxxhdpi (4x).

What is accessibility (a11y) and why is it important?

Приступачност makes the interface usable for people with disabilities: screen reader support, large text, contrast. Without a11y, an app will not be accepted for publication in the App Store or Google Play. Additionally, accessibility improves UX for all users — for example, Dynamic Type support helps people with low vision.

Закључци

  • Material Design (Android) and Human Interface Guidelines (iOS) are essential study for any mobile developer
  • Declarative frameworks SwiftUI and Jetpack Compose are the standard for new projects
  • Native components (RecyclerView, UITableView, НавигацијаView) remain relevant for legacy support
  • dp / sp / pt units ensure correct display on all screen densities
  • Safe Area, Тамни режим, and Приступачност are mandatory requirements for modern applications
  • Flutter Widgets and cross-platform solutions require knowledge of both platforms
  • Gesture control (swipe, pinch-to-zoom, pull-to-refresh) is an integral part of mobile UX

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту