Android - Lock orientation to two directions only
How can make my android application to be Landscape or portrait but without the reverse directions?
Meaning that I want to enable SCREEN_ORIENTATION_PORTRAIT
and SCREEN_ORIENTATION_LANDSCAPE
but to disable SCREEN_ORIENTATION_REVERSE_LANDSCAPE
and SCREEN_ORIENTATION_REVERSE_PORTRAIT
.
Than开发者_运维知识库ks
I had the same problem/feature request in my camera app, and found this post:
android camera surfaceview orientation
In changeRotation just comment ORIENTATION_PORTRAIT_INVERTED
and ORIENTATION_LANDSCAPE_INVERTED
, and create a method rotateViews(int degrees)
to rotate all of the images(buttons) of your layout when switching between regular landscape/portrait.
Also,
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
worked better for me than
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR | ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Make sure you notify the system that you want to handle orientation changes by adding "orientation" to the
android:configChanges
flag attribute in the activity tag in your manifest file.Override
Activity.onConfigurationChanged()
and inspect theConfiguration.orientation
field in the passedConfiguration
parameter and set the orientation of the activity to eitherActivityInfo.SCREEN_ORIENTATION_PORTRAIT
orActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
usingActivity.setRequestedOrientation
appropriately.
精彩评论