Combinando layouts XML com o Jetpack Compose: uma introdução ao ComposeView

Tempo de leitura: 2 minutes

O Jetpack Compose é um kit de ferramentas moderno para criar interfaces de usuário nativas do Android. Ele oferece uma abordagem reativa e declarativa para o desenvolvimento da interface do usuário que é fácil de entender e usar. No entanto, para os desenvolvedores que usam layouts XML há muito tempo, fazer a mudança para o Compose pode ser um pouco intimidador. Felizmente, o Jetpack Compose oferece uma solução para isso: o ComposeView.

O ComposeView é uma visualização do Android que pode ser adicionada a um layout XML, como qualquer outra visualização. Isso permite que você use o poder do Jetpack Compose em seus projetos existentes baseados em XML, sem ter que reescrever tudo do zero.

Para usar o ComposeView, basta adicioná-lo ao seu arquivo de layout XML, como faria com qualquer outra visualização. Você pode definir seu tamanho, posição e outros atributos como faria com qualquer outra visualização.

Em seguida, você precisará criar uma função Compose que descreva a interface do usuário que deseja exibir dentro do ComposeView. Essa função deve retornar um Composable que descreva a interface do usuário que você deseja exibir. Você pode usar qualquer um dos Composables incorporados fornecidos pelo Jetpack Compose, como Texto, Imagem ou Coluna. Você também pode criar seus próprios Composables personalizados se precisar de elementos de UI mais complexos.

Depois de criar sua função Compose, você pode defini-la como o conteúdo do ComposeView usando o método setContent. Isso informa ao ComposeView para usar sua função para gerar a interface do usuário que será exibida dentro da visualização.

Este é um exemplo de como você poderia usar o ComposeView em um layout XML:

<!-- activity_main.xml -->
<androidx.compose.ui.view.ComposeView
    android:id="@+id/compose_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

E no código de sua atividade:

// MainActivity.kt
class MainActivity : AppCompatActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val composeView = findViewById<ComposeView>(R.id.compose_view)
    composeView.setContent {
      Column {
        Text("Hello, ComposeView!")
        Image(imageResource(R.drawable.ic_launcher_foreground))
      }
    }
  }
}

Neste exemplo, adicionamos o ComposeView ao nosso layout XML e definimos seu tamanho para corresponder ao pai. No código de nossa atividade, recuperamos uma referência ao ComposeView e, em seguida, definimos seu conteúdo usando o método setContent. Criamos um Column Composable que contém um Texto e uma Imagem e o passamos como argumento para setContent.

Esse é apenas um exemplo simples do que você pode fazer com o ComposeView. Você pode criar uma interface de usuário muito mais complexa usando essa abordagem, inclusive usando animações, transições e outros recursos avançados fornecidos pelo Jetpack Compose.

Em conclusão, o ComposeView é uma ferramenta poderosa para desenvolvedores que desejam usar o Jetpack Compose em seus projetos existentes baseados em XML. Ele permite que você use o poder do Jetpack Compose sem ter que reescrever tudo do zero e fornece uma transição suave do desenvolvimento de UI baseado em XML para o mundo moderno, reativo e declarativo.