rub*_*com 24 android landscape rotation sensor orientation
我希望我的视图仅在横向模式下旋转,顺时针和逆时针旋转.
我读到了android <2.2的唯一逆时针方向,这不是问题,我的App现在是+2.2.
我修改我的清单以捕获配置更改
android:configChanges="keyboardHidden|orientation"
Run Code Online (Sandbox Code Playgroud)
我重写我的活动以捕获配置更改
@Override
public void onConfigurationChanged(Configuration newConfig) {
Run Code Online (Sandbox Code Playgroud)
而且我知道如何抓住方向
Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
int rot = display.getRotation();
Run Code Online (Sandbox Code Playgroud)
但是......我不知道如何触发适当的横向方向,我这样做:
if (rot == Surface.ROTATION_90 || rot == Surface.ROTATION_270){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
Run Code Online (Sandbox Code Playgroud)
但总是旋转到counterclocwise :-(
如何设置左右横向?
编辑
如果我在清单中设置方向:
机器人:screenOrientation = "风景"
活动的布局始终保持"左侧景观",我想要在左右景观之间进行更改:S
cro*_*roc 60
如果您要为Android 2.3及更高版本构建应用程序,则应将清单属性设置为
机器人:screenOrientation = "sensorLandscape"
并且您的应用将旋转到(左侧或右侧)横向位置.
如果您正在构建适用于Android 2.2及更早版本的应用程序,但希望在Android 2.3及更高版本上运行它作为"sensorLandscape"配置,您可以尝试这样的事情
public static final int ANDROID_BUILD_GINGERBREAD = 9;
public static final int SCREEN_ORIENTATION_SENSOR_LANDSCAPE = 6;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >= ANDROID_BUILD_GINGERBREAD) {
setRequestedOrientation(SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
}
...
Run Code Online (Sandbox Code Playgroud)
在我的案例中,这是处理横向更改的最佳方法.我无法找到更好的方法将屏幕旋转到Android 2.2及更早版本的左右横向方向.我尝试读取传感器方向并根据它设置横向位置,但在我看来,只要你调用"setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);" 传感器关闭(对于您的应用程序/活动),您无法通过传感器读取方向.
顺便说一句,你真的不需要覆盖"onConfigurationChanged(配置newConfig)"以使其中任何一个正常工作.
在您的清单活动声明中,而不是
android:screenOrientation = "landscape"
Run Code Online (Sandbox Code Playgroud)
使用
android:screenOrientation = "sensorLandscape"
您是否尝试过将其添加到活动标记内的清单中以查看它是否自动处理它?
android:screenOrientation = "landscape"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19687 次 |
| 最近记录: |