Best way to combine integer flags using Kotlin?

2019-01-25 02:22发布

问题:

In java we regularly combine flags via the | operator.

e.g.

getWindow().getDecorView().setSystemUiVisibility(
  View.SYSTEM_UI_FLAG_LAYOUT_STABLE | 
  View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | 
  View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
);

I can't seem to find the equivalent operator in Kotlin. Anyone know a convenient way to combine integer flags in Kotlin?

回答1:

Just use or:

getWindow().getDecorView().setSystemUiVisibility(
  View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
  View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or
  View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
);

This may be a little confusing. You can create a little helper extension function with (or whatever) to make it more readable:

infix fun Int.with(x: Int) = this.or(x)

getWindow().getDecorView().setSystemUiVisibility(
  View.SYSTEM_UI_FLAG_LAYOUT_STABLE with
  View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION with
  View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
);