Creează un cont pentru a te abona la acest blog și a-i urmări articolele pe pagina Lectură.
-
You may have heard that “No try/catch inside Flow” or “Only use catch() operator”.
-
The first question we should ask when learning Kotlin Coroutine is: what is a Coroutine after all?
-
The title of this episode is called “Side effects”, but in my opinion, it’s all about how to move side-effects out of the function and make the function composable.
-
When I was very young, like in primary school, I got a cassette of anime songs, I was so shocked and immediately fallen in love with.
-
I’m starting a new series, mostly just me taking notes while I go through the PointFree videos.
-
In previous post we talked about how to do animation in Compose using animateXXXAsState() function.
-
Let’s take a look at the simplest way to implement animation in Compose, which is using animateXXXAsState() set of functions.
-
In previous post, we discussed the mental model of multiple LayoutModifiers.
-
When we have multiple LayoutModifiers, how do we think about them?
-
LayoutModifier is a very important type of Modifier in Compose.
-
Let’s see an example of how to use LookAheadLayout to implement shared view transition animation.
-
Let’s see an example of how to do custom layout in compose using Layout().
-
Let’s see an example of using the Android’s native Canvas in Compose.
-
Today’s topic is rememberCoroutineScope.
-
Let’s talk about side effects in Compose.
-
In previous post we talked about the companion object Modifier and how it’s implementing the interface Modifier.
-
Let’s talk about Modifier.
-
This time we are focusing on derivedStateOf and how it is different from remember.
-
Let’s do a bit of recap first.
-
Situation 1 Take a look at the Composable below, what will happen if the button is clicked?
-
I’m planning to write a series of short articles about Android’s Jetpack Compose UI framework.
-
In this article, we focus on how the dispose system works in RxJava.
-
Let’s see what makes RxJava tick.
-
It all started from a message sent by my cousin in our family group chat one day.
-
5.3 Separating program evaluation from description This is the title of Chapter 5.3 from the book Functional Programming in Kotlin.
-
I’m learning how the nested scrolling machanism works on Android, but couldn’t really find any in-depth material.
-
How the view system in Android handles touch events?
-
LiveData is convenient, powerful and super easy to use.
-
Let’s understand more about Android view’s measure and layout process, and have some fun along the way.
-
Yes, there is documentation and tons of sample apps out there.
-
It is quite common in Android that we need some expandable widget to show and hide information.
-
by lazy is implemented by using the “property delegation” in Kotlin.
-
Compile time constant const val NAME = "Guowei" fun main() { tv.text = NAME } After compile it will (almost) look like this: // Imaginary code fun main() { tv.text = "Guowei" } inline function We can do similar things to functions, by adding keyword inlin…
-
I was bored at night so decided to peek into the guts of how Android’s View Binding works.
-
Rant alert I’ve been having this idea for a while, and when having dinner with my other programmer friend yesterday, I jokingly said that “Have you noticed there is a very popular programming paradigm that’s been adopted everywhere but no one is aware of…
-
In this post let’s take a deeper look at some of the more advanced uses of ObjectAnimator.
-
In this post let’s look at how to do this cool animation using ObjectAnimator.
-
Let’s look at how to use camera in canvas transformation.
-
In this post I want to go into details on canvas transformations, especially if we want to combine them.
-
Let’s use Xfermode to draw a circled avatar.
-
In this tutorial let’s see how to draw a piechart. class PieChart @JvmOverloads constructor( context: Context, attrs: AttributeSet?
-
Today let’s draw a dashboard meter.
-
Do you think Computer Science equals building websites and mobile apps?
-
We often hear 3 words: app bar, action bar and tool bar.
-
Here is one clean solution of how to combine Dagger + ViewModel + SavedStateHandle.
-
Previously, we created a centralized ViewModelFactory which can create all ViewModels in the app: class ViewModelFactory @Inject constructor( private val myViewModelProvider: Provider<MyViewModel>, private val myViewModel2Provider: Provider<MyViewModel2>…
-
It is a bit cumbersome to create a Factory for each ViewModel we have.
-
The main advantage of using ViewModel is: it can survive configuration change.
-
Let’s take a look at the ViewMvcFactory: class ViewMvcFactory @Inject constructor( private val layoutInflaterProvider: LayoutInflater, private val imageLoaderProvider: ImageLoader ) One thing worth paying attention is that this is a factory.
-
This is a simple one.