Android에서 새로 출시된 "Compose" UI 프레임워크를 사용해 보셨습니까?

느린 패키징에 불만을 토로하던 안드로이드스튜디오가 드디어 대성공! ! !

구성하다

공식 정의:

Jetpack Compose는 기본 인터페이스를 구축하기 위한 새로운 Android 툴킷입니다. Android에서 인터페이스 개발을 간소화하고 속도를 높입니다. 적은 코드, 강력한 도구, 직관적인 Kotlin API를 사용하여 앱에 빠르게 생명을 불어넣으세요.

Compose는 Google이 2021년에 강력하게 추진하고 있는 UI 프레임워크로 Jetpack 패키지로 기능을 제공합니다.

주요 기능은 UI를 코딩하는 것입니다.去XML

또 다른 좋은 기능 -实时可见代码修改

이 기능이 나오자마자 안드로이드 학생들은 황홀해 했고 마침내 10분 동안 패키지를 만드는 수고를 버릴 수 있었습니다.

물론, 그것을 얻기 위해 지불해야 하는 대가는 항상 존재하며, 여기서 지불해야 하는 대가는 다음과 같습니다.

  1. 언어 제한: Compose는 kotlin 언어만 지원합니다.
  2. 구문 재정의: 원래 XML 레이아웃 방법을 제거하고 UI를 제어하는 ​​코드로 변경합니다.

패키징 시간은 단축되지만 새로운 프로그래밍 패턴도 배우는 데 시간이 걸립니다.

겁먹지 마세요. 끝입니다.

이 장에서는 주로 Compose 애플리케이션을 만드는 두 가지 방법을 보여줍니다.

  • 하나는 한 단계에서 생성된 완전히 새로운 프로젝트, 완전히 새로운 Android Studio입니다.

  • 두 번째는 기존 프로젝트 위에 Compose 구성 요소를 추가하는 것입니다.

원스텝 생성

1. 준비:

  1. 최신 버전의 AndroidStudio
  2. 최신 버전의 코틀린

2. 만들기

79682-t85ih1qucc.png

40166-1mc2q5ste0p.png

21249-mebolk34gx.png

09413-t99i36naf0i.png

중간에 플러그인 업데이트를 하라는 메시지가 뜨면 업데이트 하시고, 업데이트 후 안드로이드 스튜디오 재시작을 잊지 마세요.

위의 코드는 생성 Empty Compose Activity프로젝트를 지정하여 생성한 코드로 변경된 사항은 없습니다. 이 프로젝트는 직접 실행할 수 있습니다.

코드의 텍스트를 마음대로 수정한 다음 저장하여 오른쪽의 미리보기 인터페이스가 업데이트되었는지, 휴대폰에서 실행 중인 인터페이스가 실시간으로 업데이트되는지 확인할 수 있습니다.

기존 프로젝트의 리노베이션

1. 준비:

  1. 최신 버전의 AndroidStudio
  2. 1.4.32 이상 버전 kotlin

처음에는 안드로이드 스튜디오를 업그레이드하지 않아도 괜찮을 거라고 생각했는데 현재 Compose는 프리뷰 버전에서만 지원하고 있는데, 실시간 프리뷰 기능 등 많은 기능을 안드로이드 스튜디오에서 지원해야 하므로 업데이트가 필요합니다.

2. 종속성 추가

修改build.gradleComposekotlin相关的配置。

app文件夹下的build.gradle文件里添加如下依赖

android {
    buildFeatures {
        // Enables Jetpack Compose for this module
        compose = true
    }

    // Set both the Java and Kotlin compilers to target Java 8.
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = "1.8"
        useIR = true
    }

    composeOptions {
        kotlinCompilerVersion = "1.4.32"
        kotlinCompilerExtensionVersion = "1.0.0-beta07"
    }
}

dependencies {

    //composei相关依赖
    implementation("androidx.compose.ui:ui:1.0.0-beta07")
    // Tooling support (Previews, etc.)
    implementation("androidx.compose.ui:ui-tooling:1.0.0-beta07")
    // Foundation (Border, Background, Box, Image, Scroll, shapes, animations, etc.)
    implementation("androidx.compose.foundation:foundation:1.0.0-beta07")
    // Material Design
    implementation("androidx.compose.material:material:1.0.0-beta07")
    // Material design icons
    implementation("androidx.compose.material:material-icons-core:1.0.0-beta07")
    implementation("androidx.compose.material:material-icons-extended:1.0.0-beta07")
    // Integration with observables
    implementation("androidx.compose.runtime:runtime-livedata:1.0.0-beta07")
    implementation("androidx.compose.runtime:runtime-rxjava2:1.0.0-beta07")
    implementation 'androidx.activity:activity-compose:1.3.0-alpha06'

    // UI Tests
    androidTestImplementation("androidx.compose.ui:ui-test-junit4:1.0.0-beta07")


}
复制代码

项目根目录下的build.gradle文件下的kotlin版本要与前面的kotlinCompilerVersion配置一致,版本大于或等于1.4.32

根目录下build.gradle文件:

    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.32"
    }
复制代码

3、代码修改

假设原有代码如下:

package com.example.maomao.democomposefromexisted

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}
复制代码

修改后:

package com.example.maomao.democomposefromexisted

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Surface
import androidx.activity.compose.setContent
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
import com.example.maomao.democomposedefault.ui.theme.DemoComposeDefaultTheme

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
//        setContentView(R.layout.activity_main)
        setContent {
            DemoComposeDefaultTheme {
                // A surface container using the 'background' color from the theme
                Surface(color = MaterialTheme.colors.background) {
                    Greeting("Android")
                }
            }
        }
    }

    @Composable
    fun Greeting(name: String) {
        Text(text = "毛毛 $name!")
    }

    @Preview(showBackground = true)
    @Composable
    fun DefaultPreview() {
        DemoComposeDefaultTheme {
            Greeting("Android")
        }
    }
}
复制代码

修改完代码,右侧会有Build & Refresh的提醒,点击刷新preview界面,即可看到预览。

运行查看结果。

PS:如果有报错DemoComposeDefaultTheme找不到,那就走前面的一步式创建创建Empty Compose Activity项目,把里面的DemoComposeDefaultTheme相关的累拷贝进你原有项目。

到目前为止,这只是初步让项目跑起来,还没到真正的逻辑开发。

只是体验Compose新功能的看客,到这里可以结束了。

如果是真正需要项目迁移,那就要提前准备好kotlin语法基础,和Compose代码布局的语法。然后才能上手开发。

后续有时间会更新Compose语法相关文章,敬请期待。

Supongo que te gusta

Origin juejin.im/post/6981110181086101541
Recomendado
Clasificación