Jetpack Compose之選擇器使用實(shí)例講解
選擇器是啥
選擇器主要是指Checkbox復(fù)選框,單選開關(guān)Switch,滑桿組件Slider等用于提供給用戶選擇一些值和程序交互的組件,比如像復(fù)選框Checkbox,可以讓用戶選擇一個(gè)或者多個(gè)選項(xiàng),它可以將一個(gè)選項(xiàng)打開或者是關(guān)閉,通常用來做線上調(diào)查問卷或者是模擬考試的場景程序中,再比如滑桿組件可以用來作為調(diào)節(jié)音量和亮度的數(shù)值調(diào)整,或者是做進(jìn)度條。
實(shí)例解析
1.Checkbox復(fù)選框
Checkbox允許用戶從一個(gè)集合中選擇一個(gè)或者多個(gè)選項(xiàng),而且它可以將一個(gè)選項(xiàng)打開或者是關(guān)閉,下列是Checkbox的參數(shù)列表
@Composable fun Checkbox( checked: Boolean, // 是否被選中 onCheckedChange: ((Boolean) -> Unit)?, // 當(dāng)復(fù)選框被點(diǎn)擊時(shí)的回調(diào) modifier: Modifier = Modifier, enabled: Boolean = true, // 是否啟用復(fù)選框 interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, colors: CheckboxColors = CheckboxDefaults.colors() // 復(fù)選框的演示組 )
我們可以通過下面的代碼了解Checkbox的使用方法
@Composable fun CheckBoxDemo() { val checkedState = remember { mutableStateOf(true) } Checkbox(checked = checkedState.value, onCheckedChange = { checkedState.value = it }, colors = CheckboxDefaults.colors(checkedColor = Color(0xFF0079D3))) }
運(yùn)行結(jié)果:
2.TriStateCheckbox三狀態(tài)選擇框
當(dāng)我們的復(fù)選框有很多個(gè)的時(shí)候,往往希望能夠統(tǒng)一選擇或者時(shí)取消,這種場景下我們就可以使用TriStateCheckbox ,代碼如下:
@Composable fun TriStateCheckBoxDemo() { val(state,onStateChange) = remember { mutableStateOf(true) } val(state2,onStateChange2) = remember { mutableStateOf(true) } val parentState = remember(state, state2) { if(state && state2) ToggleableState.On else if(!state && !state2) ToggleableState.Off else ToggleableState.Indeterminate } val onParentClick = { val s = parentState != ToggleableState.On onStateChange(s) onStateChange2(s) } Column(modifier = Modifier.padding(10.dp,0.dp,0.dp,0.dp)) { TriStateCheckbox(state = parentState, onClick = onParentClick, colors = CheckboxDefaults.colors(checkedColor = MaterialTheme.colors.primary) ) Checkbox(checked = state, onCheckedChange = onStateChange) Checkbox(checked = state2, onCheckedChange = onStateChange2) } }
運(yùn)行結(jié)果如下。
當(dāng)復(fù)選框全選中時(shí),TriStateCheckbox顯示已完成的狀態(tài),而如果只有部分復(fù)選框被選中時(shí),TriStateCheckbox則顯示不確定狀態(tài),當(dāng)我們在這個(gè)時(shí)候點(diǎn)擊它時(shí),則會將剩余沒有選中的復(fù)選框設(shè)置為選中狀態(tài),當(dāng)我們?nèi)サ羲羞x中狀態(tài)時(shí),TriStateCheckbox的狀態(tài)也被置成了未選中的狀態(tài)。
3.Switch單選開關(guān)
Switch組件可以控制單個(gè)項(xiàng)關(guān)閉或者是開啟,參數(shù)列表如下
@Composable @OptIn(ExperimentalMaterialApi::class) fun Switch( checked: Boolean, // 開關(guān)的狀態(tài) onCheckedChange: ((Boolean) -> Unit)?, 點(diǎn)擊開關(guān)的回調(diào),會獲得最新的開關(guān)狀態(tài) modifier: Modifier = Modifier, enabled: Boolean = true, // 是否啟用 interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, colors: SwitchColors = SwitchDefaults.colors() // 開關(guān)組的顏色。 )
Switch組件的使用也特別簡單,代碼如下:
@Composable fun SwitchDemo() { val checkedState = remember { mutableStateOf(true) } Switch(checked = checkedState.value, onCheckedChange = { checkedState.value = it }) }
運(yùn)行結(jié)果:
4.Slider滑桿組件
slider組件類似于傳統(tǒng)視圖的SeekBar,可以用來做音量,亮度之類的數(shù)值調(diào)整或者是進(jìn)度條,我們先看看它的參數(shù)列表
@Composable fun Slider( value: Float, // 進(jìn)度值 onValueChange: (Float) -> Unit, // 進(jìn)度改變的監(jiān)聽 modifier: Modifier = Modifier, // 修飾符 enabled: Boolean = true, valueRange: ClosedFloatingPointRange<Float> = 0f..1f, // 進(jìn)度值的范圍默認(rèn)是0到1 /*@IntRange(from = 0)*/ steps: Int = 0, onValueChangeFinished: (() -> Unit)? = null, interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, colors: SliderColors = SliderDefaults.colors() // 滑桿顏色設(shè)置,默認(rèn)值是SliderDefaults.colors )
其中,colors參數(shù)是用于設(shè)置滑桿各部位的顏色?;瑮U組件中可設(shè)置顏色的區(qū)域很多,例如滑桿小圓球的顏色,滑桿進(jìn)度條顏色,滑桿底色等,step參數(shù)將進(jìn)度條平分為(step+1) 段,比如當(dāng)分成兩段時(shí),進(jìn)度條在第一段之間拉動,超過第一段的一半就自動到第一段,沒超過就退回到原來的位置,Sliderbar的使用代碼如下。
@Composable fun SliderDemo() { var sliderPosition by remember { mutableStateOf(0f) } Text(text = "%.1f".format(sliderPosition*100) + "%") Slider(value = sliderPosition, onValueChange = {sliderPosition = it}) }
運(yùn)行結(jié)果如下
總結(jié)
本文主要介紹了復(fù)選框,三狀態(tài)選擇框,單選開關(guān)和滑桿組件,讀者應(yīng)該自己手敲一遍,記憶會更加牢靠。在寫測試demo的時(shí)候,建議讀者也盡量使用這些組件,一是可以熟悉他們的使用,二是讓自己寫的demo更加與眾不同
到此這篇關(guān)于Jetpack Compose之選擇器使用實(shí)例講解的文章就介紹到這了,更多相關(guān)Jetpack Compose選擇器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android使用ViewPager快速切換Fragment時(shí)卡頓的優(yōu)化方案
今天小編就為大家分享一篇關(guān)于Android使用ViewPager快速切換Fragment時(shí)卡頓的優(yōu)化方案,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-12-12android webview獲取html代碼和根據(jù)id獲取value實(shí)例
這篇文章主要介紹了android webview獲取html代碼和根據(jù)id獲取value實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03Android編程基于自定義控件實(shí)現(xiàn)時(shí)鐘功能的方法
這篇文章主要介紹了Android編程基于自定義控件實(shí)現(xiàn)時(shí)鐘功能的方法,結(jié)合實(shí)例形式詳細(xì)分析了Android自定義控件的定義及時(shí)鐘功能相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-03-03Android實(shí)現(xiàn)瘋狂連連看游戲之游戲效果預(yù)覽(一)
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)瘋狂連連看游戲之游戲的效果預(yù)覽,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03Android使用ViewPager實(shí)現(xiàn)翻頁效果
這篇文章主要為大家詳細(xì)介紹了Android使用ViewPager實(shí)現(xiàn)翻頁效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05Android根據(jù)輸入銀行卡號判斷屬于哪個(gè)銀行
這篇文章主要介紹了Android根據(jù)輸入銀行卡號判斷屬于哪個(gè)銀行的實(shí)現(xiàn)代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-02-025分鐘快速實(shí)現(xiàn)Android爆炸破碎酷炫動畫特效的示例
本篇文章主要介紹了5分鐘快速實(shí)現(xiàn)Android爆炸破碎酷炫動效的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-12-12Eclipse工程轉(zhuǎn)為兼容Android Studio模式的方法步驟圖文詳解
這篇文章主要介紹了Eclipse工程轉(zhuǎn)為兼容Android Studio模式的方法步驟,本文圖文并茂給大家介紹的非常詳細(xì),需要的朋友可以參考下2017-12-12