import android.content.res.Configuration
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.LinearLayout
class MainActivity : AppCompatActivity() {
private lateinit var linearLayout: LinearLayout
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
linearLayout = findViewById(R.id.linear_layout)
updateOrientation(resources.configuration.orientation)
registerOrientationListener()
}
private fun registerOrientationListener() {
val listener = object : OrientationEventListener(this) {
override fun onOrientationChanged(orientation: Int) {
if (orientation == ORIENTATION_UNKNOWN) return
val newOrientation = if (orientation in 45..134 || orientation in 225..314) {
Configuration.ORIENTATION_LANDSCAPE
} else {
Configuration.ORIENTATION_PORTRAIT
}
updateOrientation(newOrientation)
}
}
if (listener.canDetectOrientation()) {
listener.enable()
}
}
private fun updateOrientation(newOrientation: Int) {
linearLayout.orientation = if (newOrientation == Configuration.ORIENTATION_LANDSCAPE) {
LinearLayout.HORIZONTAL
} else {
LinearLayout.VERTICAL
}
}
}