Compose mini updates

Bu sene Google IO iรงin fiziksel bir event covid-19 sebebiyle olamฤฑyor, stรผdyo kaydฤฑ iรงin de ofise gitmemek adฤฑna dijital kayฤฑt da olmayacaฤŸฤฑ aรงฤฑklandฤฑ ama bir diฤŸer yandan yine aynฤฑ tarihlerde bu yฤฑl yapฤฑlan รงalฤฑลŸmalarฤฑn da duyurulacaฤŸฤฑnฤฑ tahmin ediyoruz. Bu anlamda benim en รงok merak ettiฤŸim konulardan biri de Compose.

UI developmentla ilgili her sene รงeลŸitli update’ler oluyor ama geรงen sene Compose’la biraz ลŸaลŸฤฑrtฤฑcฤฑ bir giriลŸ yapmฤฑลŸ oldular. Android Summit sonrasฤฑ artฤฑk Android Studio’ya gradle dependecy’si olarak ekleyip deneyebilir duruma gelmiลŸtik. Ben ilk inceleme yazฤฑmฤฑ yaklaลŸฤฑk 1.5 ay รถnce yazdฤฑฤŸฤฑmdaysa gรผncel versiyon dev03’tรผ. Bu sene wtm sezonunda birkaรง chapter’da bu konuda sunum yapma fฤฑrsatฤฑm da oldu, sunumlarla paralel de aslฤฑnda geliลŸmeleri takip edip kendim iรงin yaptฤฑฤŸฤฑm sample projeyi gรผncel tutmaya รงalฤฑลŸtฤฑm. Bir diฤŸer deฤŸiลŸiklikleri gรผncel olarak takip edebileceฤŸiniz repo ise Google’ฤฑn compose’la geliลŸtirdiฤŸi sample app Jetnews‘in reposu. Api referanslarฤฑnda tam olarak nasฤฑl yapacaฤŸฤฑmฤฑ bulamadฤฑฤŸฤฑm ya da anlamadฤฑฤŸฤฑm durumlarda รงok faydalฤฑ olduฤŸunu sรถylemeliyim. ร‡รผnkรผ developer.android de รงok uzunca bir sรผre anlatฤฑmฤฑnฤฑ dev03’e yapmฤฑลŸtฤฑ.

dev09 henรผz official olarak duyurulmadฤฑ. Dolayฤฑsฤฑyla yazฤฑnฤฑn baลŸฤฑnda da dediฤŸim gibi io’nun da tarihlerinin yakฤฑn olmasฤฑ sebebiyle codelab’ler, blog yazฤฑlarฤฑyla buraya eklenen yeni feature’larฤฑn anlatฤฑlacaฤŸฤฑnฤฑ umuyorum ๐Ÿ™‚

dev03’ten dev09’a giden yolda sadece basic text, imaj, buton gรถsterimi olan sample projemde en fazla etkilenen kฤฑsฤฑm ise imaj oldu. Ama ลŸunu da sรถylemeliyim ki dev03’ten dev09’a ya da 8’e direk geรงmiลŸ aradaki versiyonlarฤฑ deneyimlememiลŸ olsaydฤฑm bunu sรถylemezdim sanฤฑrฤฑm.

dev03:

@Composable
fun SpeakerInformation(speaker: SpeakerInfo) {
Column(
modifier = Spacing(16.dp)
) {
Container(modifier = Height(180.dp) wraps Expanded) {
Clip(RoundedCornerShape(5.dp)) {
DrawImage(image = speaker.image)
}
}
Text(speaker.name)
Text(speaker.title)
Text(speaker.sessionTitle)
}
}
view raw gistfile1.txt hosted with ❤ by GitHub

dev09:

@Composable
fun SpeakerImage(image: ImageAsset?) {
image?.let {
val imageModifier = Modifier
.preferredHeightIn(maxHeight = 180.dp)
.fillMaxWidth()
.clip(shape = RoundedCornerShape(4.dp))
Image(image, modifier = imageModifier, contentScale = ContentScale.Crop)
}
}

Bir รถnceki yazฤฑmda anlatฤฑrken imajฤฑn belli รถzelliklerde รงizilebilmesi iรงin, container objesinin iรงerisinde yer almasฤฑnฤฑ gerektiฤŸini, container’a modifier tanฤฑmlayarak imajฤฑmฤฑzฤฑ istediฤŸimiz gibi รงizdirebileceฤŸimizi anlatmฤฑลŸtฤฑm. 09’a evrilen yolda ise imaj kendisi modifier alabiliyor, container’a ihtiyaรง duymaksฤฑzฤฑn รงizebiliyoruz.

Yine รถrnekte de dikkat edileceฤŸi รผzere ilk versiyonda bir ลŸeyi modifier olarak kullanabilmek iรงin tam adฤฑnฤฑ bilmek ve bu ลŸekilde eklemek gerekiyordu, LayoutPadding, Flexible vs gibi. Bu ลŸimdi ise Modifier.<…> ลŸeklinde eriลŸebileceฤŸimiz ya da รงok daha developer friendly bir kullanฤฑma evrilmiลŸ. Developer friendly demiลŸken 3’ten 9’a minor isim deฤŸiลŸikleri, paket deฤŸiลŸiklikleri, bazฤฑ constructor’da deฤŸiลŸiklikler oldu ama giden nokta hep kullanฤฑmฤฑ daha da basitleลŸtirme yรถnรผndeydi.

Bir diฤŸer beklenen konu iste listelerin geliลŸtirilmesinin stabilleลŸmesiydi. Android Summit’de recylerview yerine scrollinglist isminde ya da buna benzer bir yapฤฑ รผzerinde รงalฤฑลŸฤฑldฤฑฤŸฤฑ duyurulmuลŸtu. Ancak henรผz deneyebileceฤŸimiz bir versiyonu da api iรงerisinde mevcut deฤŸildi. Jetnews app’inde verticalscroller kullanฤฑlarak recyclerview benzeri yapฤฑlar implement edilmiลŸti. Bu baฤŸlamda ben de her yeni gelen update’de recylerview yerine gelecek component belli oldu mu yoksa verticalscoller’ฤฑn รงalฤฑลŸma prensibi/performansฤฑyla ilgili bir update geldi mi aรงฤฑklayacaklarฤฑ diye merakla bekliyordum.

adapterlist dev05’te duyurulmasฤฑna raฤŸmen henรผz jetnews’de de bununla ilgili bir update yapฤฑlmadฤฑ ancak aรงฤฑklamasฤฑndan recyclerview’e denk olduฤŸunu da anlฤฑyoruz.

@Composable fun <T> AdapterList(
    data: List<T>,
    modifier: Modifier = Modifier,
    itemCallback: (T) -> Unit
): Unit

“A vertically scrolling list that only composes and lays out the currently visible items.”

https://developer.android.com/reference/kotlin/androidx/ui/foundation/package-summary#AdapterList(kotlin.collections.List,%20androidx.ui.core.Modifier,%20kotlin.Function1)

Benim blog yazฤฑsฤฑ iรงin geliลŸtirdiฤŸim sample uygulamada denemek isteseydik ise aลŸaฤŸฤฑdaki ลŸekilde implement edecektik.

@Composable
fun SpeakerList(speakers: List<SpeakerInfo>){
AdapterList(data = speakers) {
SpeakerInformation(speaker = it)
}
}

Yeni gelecek haberleri de merakla bekliyoruz. ๐Ÿ™‚

Referanslar:

Sample proje: https://github.com/ElifBon/ComposeIWD

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.