How to calculate transition time between two screens?

In my current implementation i used to blindly wait for two seconds for new screen to appear whenever i command a tap on a button through appium. All of my screens used to take under two seconds of transition time. With new features however transition time has increased up to five seconds and now i have to wait for atleast five seconds for few of the screens. Two seconds wait was acceptable but five seconds is too much. Is there a way to properly calculate this transition time needed for every screen to appear so that i can wait only for as much as the specific screen transition needs? Is there any callback or variable to check for in appium which gives you information that appium has performed tap command and now new screen has appeared. I will simply check for this variable/callback and will resume my testing. This way saves me from waiting for five fixed seconds for every screen transition?

You should read up on Implicit Waits:

Use Log4j to know which event occured
Use Listners
Use Fluent and Webdriver Wait