Sign in

Progress circle, I’m addicted to customize progress bar on Android so I’d like to write something about that.

First of all, let see how does Timer work in Android OS.
One can say that it’s working fine and running smoothly :)

The first approach I was implemented is that using repeat{ } then emit a decreasing the sequence of seconds. Basically, It worked as expected but the circle progress is not running smoothly.
Let’s see the code:

Repository class

ViewModel class

In the github world, everyone must have known jitpack or jcenter or like a repository that help us easy to use public library.
Recently, adapt to the new project in my company I have to use private library that must be published on Github package as well base on company security policy.

So, Today I would like to introduce Maven-Publish-Plugin that can help us solve this problem.

First of all , What’s Github packges?
Github has released Github Packages last year. You can now easily host your private libraries without subscribing to another service such as jitpack or jcenter or…

Today, I just played with dark theme and preference components and try to write something what I have done.

First of all, in order to understand about Dark Theme let’s skim the dark mode material. Check it out here !
Relate to Preference Components, I believe we are all here have played with Share Preference. So preference components concept is the same with pair of key-value stored by xml file format.
This is a useful component from Android Jetpack that will help you to easy play with local data store or screen setting. Read about preference components.

Okay, now let’s…

From RxJava2 release one of the important changes is that null is no longer accepted as a stream element.

RxJava 2.x no longer accepts null values and will yield NullPointerException immediately or as a signal to downstream.

Check it out RxJava2.0 Changes

Actually, the value ‘ null ‘ is really necessary in Java/Kotlin or some special cases. There are several ways to handle null values in RxJava 2.0.

  1. Using Optional in Java 8

Unfortunately, Optional is only supported from API 24 or later. You should consider carefully your app’s target SDK before deciding to use it.

2. Create a dedicated…

As a mobile engineer, we are all need a way to research/confirm request or response of other mobile application. However, almost of SSL request and response from API is encrypted so can not be seen in normal way.

So, today I’d like to introduce the simple way to see SSL comunication by using Charles

1. Macbook
Download Charles and install into Mac.

  • First stepProxy > Proxy Settings, set HTTP port is8888 . This number will be used later when setting on Android device.
  • Proxy > SSL Proxying Settings, specify the domain you want to capture.e.g.: *
  • Finally, Help >…

Good morning!

Following the previous article I shared with you how to use TextInputEditText of google material. So today I’d like to share with you about apply two-way data binding and raise/solve a bug when working with live data and data binding.

Firstly, let’s change previous code to two-way data binding by set text mapping with userName variable in viewModel . Let’s see:

android:text="@={viewModel.userName}" />

Base on this way, userName and email must be declared public.

Code likes below:

val userName = MutableLiveData<String>()
val email = MutableLiveData<String>()

Next, we have to…

Hello again,

Today, I’d like to show you about how to use TextInputLayout/TextInputEditText of Google Material design and what problem I have faced.

Let’s see the document first Material text fields.

I make a register screen example to apply TextInputEditText and MVVM, databinding.
Here is the register screen:

Layout xml of User Name field

userNameError and onUserNameInput(text) is defined in ViewModel class. Using databinding to observer it so the changed will be applied immediately in UI.
Let’s see ViewModel class:

In order to show error of validation by programmatically we have to use BindingExtentions that is one of…

Today, I’d like to show you one of most common problems when using git and how to solve that problem.

Which version control system is right for you? I think that’s Git.
We all understand the advantages of using Git so I will not mention What is git? or How git works? in this article.

First you need to remember that Git can not diff birnay file. It will upload entiry file into repository and will store its pretty much forever.

It will also store every single version of every single binary file within the repository. So , if you…

Hello RxJava/RxKotlin-er !

Have you ever tried resubscribe to the observable?
Or how do you implement re-executing the same task again with a little delay or depending on exception type?

Today, I would like to introduce interesting operator of RxKotlin that can make you love Rx more.
There are 2 operator that can help you resubscribe to observable:
repeatWhen() and retryWhen().
First of all, what is the difference between them?
I think you just need remember the its use case:

repeatwhen() -> resubcribes when it receives onCompleted()
retrywhen() -> resubcribes when it receives onError()

Now, look at my topic again…


Android Engineer

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store