Android使用Jetpack Compose開發(fā)零基礎起步教程
先搭建好之后呢,我們就來做第1個例子。
永遠的Hello World
先搭建好之后呢,我們就來做第1個例子,編程的第1個例子永遠是hello world的,下面呢,我們就來做hello world的例子。
實現(xiàn)hello的例子步驟如下。
創(chuàng)建項目,啟動Android Studio工具,新建一個項目,在New Project對話框中Empty Compose Activity,如圖所示。
然后點擊下一步打開對話框,如圖所示。
大家可以根據(jù)自己的情況輸入項目名和包,然后單擊Finish按鈕創(chuàng)建項目。
項目創(chuàng)建好了之后,大家可以看到MainActivity代碼:
package com.zhijieketang.helloproj import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material.MaterialTheme import androidx.compose.material.Surface import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import com.zhijieketang.helloproj.ui.theme.HelloProjTheme class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { HelloProjTheme { // A surface container using the 'background' color from the theme Surface( modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background ) { Greeting("Android") } } } } } @Composable fun Greeting(name: String) { Text(text = "Hello $name!") } @Preview(showBackground = true) @Composable fun DefaultPreview() { HelloProjTheme { Greeting("Android") } }
此時那你就可以運行了,但是這并不是我們所需要的hello world,我們還需要修改一下代碼。
修改代碼,為了在頁面中顯示hello world,我們需要修改代碼。
package com.zhijieketang.helloproj ... class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { Greeting("World") } } } @Composable fun Greeting(name: String) { Text(text = "Hello $name!") }
代碼修改完成之后,我們就可以運行了。
運行結果如下圖所示。
分解的HelloWorld代碼
了剛才的 Hello World 的例子運行起來后,接下來我們來解析一下它的代碼。其中修改的最核心的代碼在以下部分:
package com.zhijieketang.helloproj ... class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { ① Greeting("World") } ② } } @Composable fun Greeting(name: String) { ③ Text(text = "Hello $name!") }
- 上述代碼第①~②行的setContent{…}是Kotlin語言中的一個lambda表達式,在該個表達式中,"World"被傳遞給一個名為Greeting的函數(shù),然后這個函數(shù)被用作setContent方法的參數(shù)。
- 代碼第③行的Greeting函數(shù)是組合函數(shù)(Compose functions)。
在Jetpack Compose中的UI界面由組合函數(shù)(Compose functions)構成。這些函數(shù)都是使用Kotlin編寫的,是采用注解 @Composable 標記的函數(shù),表示這個函數(shù)是用來創(chuàng)建UI的。
Composable函數(shù)具有以下特點:
- 可以嵌套調用,形成組合函數(shù),使得復雜的UI可以通過簡單的組合函數(shù)實現(xiàn)。
- 在Composable函數(shù)內部,可以直接調用其他Composable函數(shù)、傳遞參數(shù)以及執(zhí)行控制流操作,不需要手動管理UI狀態(tài)。
- Composable函數(shù)具有函數(shù)式編程的特點,即輸入確定,輸出確定,不依賴外部狀態(tài),因此可以進行高效的重用和測試。
一個基本的Composable函數(shù)的結構如下:
@Composable fun MyComposableFunction() { // 組合UI`元素 }
預覽函數(shù)
使用Android Studio Canary版本還提供了一個布局預覽功能(Jetpack Compose Preview),他 會實時更新,以反映開發(fā)者對組合函數(shù)的更改。這使開發(fā)者可以更快地進行UI開發(fā)和測試。注意它不會重啟設備和重新安裝應用,因此內存占用較少。
Jetpack Compose 還提供了 @Preview 注解,使開發(fā)者能夠在開發(fā)過程中輕松預覽和測試這些可組合函數(shù)。預覽函數(shù)也是可組合函數(shù),它使用 @Composable 注解來標識一個可組合函數(shù)。示例點如下:
... @Composable fun Greeting(name: String) { Text(text = "Hello $name!") } @Preview(name = "預覽") // 預覽函數(shù)注解 @Composable fun PreviewGreeting() { Greeting("World") } ...
上述代碼@Preview(name = “預覽”) 是注解PreviewGreeting()函數(shù)為預覽函數(shù),其中name 屬性用于為該預覽函數(shù)提供一個名稱。這個名稱可以讓開發(fā)者在 Android Studio 的預覽面板中更容易地找到和區(qū)分多個預覽的UI。另外,需要注意的是它不能夠帶有參數(shù)。
聲明了預覽函數(shù)之后,如下圖所示即便是應用程序沒有啟動,開發(fā)人員也會看到預覽窗口中UI的狀態(tài)。
事實上,開發(fā)人者直接修改代碼并將其保存后,也可以讓應用程序的UI狀態(tài)也會立即反映在設備上,這是Jetpack Compose 的熱重載功能,它可以讓開發(fā)者在修改代碼并保存后,應用程序的 UI 狀態(tài)會立即反映在設備上,從而加快了開發(fā)速度。
**提示:**熱重載與用預覽功能區(qū)別。
- 目的不同:熱重載的主要目的是在代碼修改后能夠立即反映在應用程序的 UI 上,從而讓開發(fā)者能夠更快地查看和測試代碼修改的結果。而預覽函數(shù)的主要目的是讓開發(fā)者在構建 UI 時進行調試和測試,可以在不需要運行應用程序的情況下預覽和測試組件。
- 使用場景不同:熱重載適用于快速查看和測試代碼修改的結果,但不能提供完整的 UI 預覽和測試功能。而預覽函數(shù)可以讓開發(fā)者在不同的設備和主題條件下預覽和測試組件,以及測試組件的外觀和行為。
- 支持功能不同:熱重載支持修改所有的代碼和資源文件,包括組件代碼、布局文件和樣式文件等。而預覽函數(shù)主要用于測試和預覽組件代碼,不能修改其他代碼和資源文件。
綜上所述,熱重載和預覽功能在 Jetpack Compose 開發(fā)中都有其獨特的用途和優(yōu)點。對于不同的開發(fā)場景和需求,您可以根據(jù)實際情況選擇使用熱重載或預覽函數(shù),以提高開發(fā)效率和開發(fā)體驗。
到此這篇關于Android使用Jetpack Compose開發(fā)零基礎起步教程的文章就介紹到這了,更多相關Android Jetpack Compose內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Android 使用Vibrator服務實現(xiàn)點擊按鈕帶有震動效果
這篇文章主要介紹了Android 使用Vibrator服務實現(xiàn)點擊按鈕帶有震動效果,,本文通過實例圖文相結合給大家介紹的非常詳細,對大家的學習火鍋工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06Android開發(fā)中R.java文件丟失或無法更新的解決方法
這篇文章主要介紹了Android開發(fā)中R.java文件丟失或無法更新的解決方法,較為詳細的列舉分析了出現(xiàn)R.java文件丟失或無法更新的常見原因及相應的解決方法,需要的朋友可以參考下2016-02-02Android之帶group指示器的ExpandableListView(自寫)
Android缺省的ExpandableListView的group header無法固定在界面上,在網(wǎng)上搜索了好多都不盡人意,于是乎在別人的基礎上改進了一點點,原理都差不多2013-06-06Android筆記之:App應用之啟動界面SplashActivity的使用
當前比較成熟一點的應用基本上都會在進入應用之顯示一個啟動界面.這個啟動界面或簡單,或復雜,或簡陋,或華麗,用意不同,風格也不同2013-04-04Android Activity啟動模式之singleTask實例詳解
這篇文章主要介紹了Android Activity啟動模式之singleTask,結合實例形式較為詳細的分析了singleTask模式的功能、使用方法與相關注意事項,需要的朋友可以參考下2016-01-01