Почему я перешёл на Jetpack Compose и бросил XML

Почему я перешёл на Jetpack Compose и бросил XML

Когда я начинал Android-разработку, почти все экраны писались на XML. Казалось, что так проще: есть визуальный редактор, знакомая разметка, куча гайдлайнов и примеров на StackOverflow. Но чем больше проектов я делал, тем больше замечал, как XML начинает тормозить и усложнять жизнь:

  • Списки -> нужен RecyclerView, Adapter, ViewHolder, layout-файл. Каждая мелкая правка требует дублирования кода.
  • Анимации -> чтобы сделать что-то динамичное, нужно писать десятки строк boilerplate-кода, плюс сложные состояния.
  • Динамический UI -> изменение одного элемента часто вызывает переписывание нескольких layout-файлов.

Когда я попробовал Jetpack Compose, ощущение было как переход с Windows 95 на современный MacBook: всё стало проще, быстрее и удобнее.

Пример: список прокручиваемых элементов

XML:

  • RecyclerView
  • Adapter
  • ViewHolder
  • Layout-файлы
  • notifyDataSetChanged / DiffUtil
<TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/itemText" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="16dp"/>
class MyViewHolder(view: View) : RecyclerView.ViewHolder(view) { val text: TextView = view.findViewById(R.id.itemText) } class MyAdapter(private val items: List<String>) : RecyclerView.Adapter<MyViewHolder>() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = MyViewHolder(LayoutInflater.from(parent.context) .inflate(R.layout.item_row, parent, false)) override fun onBindViewHolder(holder: MyViewHolder, position: Int) { holder.text.text = items[position] } override fun getItemCount() = items.size }
recyclerView.layoutManager = LinearLayoutManager(this) recyclerView.adapter = MyAdapter(data)

Реализация аналогичного списка на Compose:

LazyColumn { items(data) { item -> Text(text = item, modifier = Modifier.padding(16.dp)) } }

Одна функция вместо нескольких файлов и десятков строк кода.

Но важно понимать: Compose не волшебство. Он требует знания View-системы, lifecycle и архитектуры приложения. Без этого новичку может показаться, что UI «сам себя делает».

На своём Telegram-канале я делюсь:

  • лайфхаками по Android-разработке
  • реальными примерами кода
  • своим опытом перехода на Compose и избегания типичных ошибок

Если хотите ускорить разработку и писать код проще — подписывайтесь.

2
1 комментарий