新的Android开发人员应该学习撰写还是XML?
#kotlin #android #jetpack #jetpackcompose

在接下来的三个月中,我将自愿教授本科学生Android Development。因此,我也面对这个问题,我应该教新的开发人员组成还是XML?

我认为,有抱负的Android开发人员应该开始学习。这是我的四个原因:

1.准备生产

撰写已准备好生产。 Twitter,Play Store和Airbnb只是已经使用撰写的少数公司。它比one year since Compose reached version 1.0

准备好生产是什么意思?

  • 没有主要的错误或不必要的故障排除。
  • API稳定,一致且直观。
  • 没有性能问题,您的用户界面(UI)将顺利进行。

当我担任后端工程师一年后,我回到Android开发时,我很好奇我是否可以使用Compose构建复杂的UI。作为概念证明,我已经制作了a clone of Astro,这是一个快速的商业应用程序,我认为它具有真实应用程序的典型要求(分层UI,自定义行为,多个UI段等)。

因此,您不必担心学习撰​​写时会遇到太多问题。您可以发布带有Compose的真实应用。

2.简单

这是您如何使用XML编写UI的示例。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/tvName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hi, my name is Aldo" />

    <ImageView
        android:id="@+id/ivProfile"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

    <TextView
        android:id="@+id/tvRole"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="I'm an Android developer ?" 
        />

</LinearLayout>

这就是您使用Compose编写UI的方式。

Column {
    Text("Hi, my name is $name", style = TextStyle(
        fontWeight = FontWeight.Bold))
    AsyncImage(model = "https://example.com/img/user.png")
    Text("I'm an Android developer ?")
}

即使从这个简单的用例中,您也可以看到撰写使用较少的代码行。

代码越简单,学习或教它就越容易。

您不需要学习:

  • XML(只使用Kotlin)
  • 将XML绑定到Kotlin类
  • 通过使用ConstraintLayout来提高视图层次结构来提高性能

这意味着您有更多时间学习其他Android主题,例如ViewModel,Testing,Coroutines和JetPack库。

3.熟悉

如果您已经从其他平台学习了声明性UI,您会感到宾至如归。

查看这些代码片段,这些代码片段为iOS(SwiftUi)和跨平台(Flutter)构建相同的UI。

VStack {
    Text("Hi, my name is \(name)!")
        .fontWeight(.bold)
    AsyncImage(url: URL(string: "https://example.com/img/user.png"))
    Text("I'm an iOS developer ?")
}
Column(
    children: const<Widget>[
        Text('Hi, my name is $name', style: TextStyle(
            fontSize: FontWeight.bold)),
        Image.network('https://example.com/img/user.png')
        Text('I\'m a Flutter developer ⬅️')
    ]
)

看起来有些相似,不是吗?

机会是,新的Android开发人员不会从事专职Android开发人员的职业。他们可能正在探索颤抖,iOS,后端,甚至不从事开发人员的职业。

通过使用Compose,您已经学习了一个可以应用于其他平台的概念。

4.支持

无论图书馆有多好,一开始学习新东西都可能很困难。当您卡住时,Complose有很多资源可以为您提供帮助,从官方的Android文档到众多社区文章。提到一些:

您也不需要担心与流行库集成。诸如JetPack组件(ViewModel,Navigation,Hilt等),Glide或Koin等流行的库与您的撰写代码兼容。

Compose仍然得到Google的积极支持,因此,即使您找到了错误或功能请求,也可以期望它在下一个版本中解决。

概括

总而言之,对于刚开始从Android开发开始的开发人员来说,COMPOSE是一个安全的选择。尽管XML仍然在旧版项目中占主导地位,但Compose是用于构建本地Android UI的现代工具包。继续并在第一个应用中使用撰写!

笔记

  • 我将在Musamus Merauke大学(UMUS)教授Pemograman移动课程,作为Praktisimengajar.ID政府计划的一部分。谢谢您给我这个机会!

  • 公平地说,XML也是声明性的UI,与Kotlin相比,冗长的UI。但是在XML中,您仍然需要为许多任务编写命令式代码。

  • 封面照片由weston m

  • 拍摄