我正在制作一个应用程序,可以让您阅读维基百科页面。
我想在每次手机从竖屏切换到横屏或反之时显示一个图标。如果用户希望锁定屏幕方向,则可以执行此操作;否则,屏幕将根据传感器数据进行定位。谷歌应用商店中的一些应用程序已经实现了这个功能,例如 Pocket。
为了实现这个功能,我重写了标签。
我想在每次手机从竖屏切换到横屏或反之时显示一个图标。如果用户希望锁定屏幕方向,则可以执行此操作;否则,屏幕将根据传感器数据进行定位。谷歌应用商店中的一些应用程序已经实现了这个功能,例如 Pocket。
为了实现这个功能,我重写了标签。
public void onConfigurationChanged(Configuration newConfig)
现在,如果我使用以下代码设置了锁定配置(orientation_dir是存储在共享首选项中的方向值,并且它是正确的,因为我已经通过代码进行了调试):
if(orientation_dir == Configuration.ORIENTATION_LANDSCAPE)
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
}
else if(orientation_dir == Configuration.ORIENTATION_PORTRAIT)
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
}
如果正确设置方向,则在旋转手机时不会调用onConfigurationChanged()方法。
如果我以这种方式设置方向:
if(orientation_dir == Configuration.ORIENTATION_LANDSCAPE)
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
else if(orientation_dir == Configuration.ORIENTATION_PORTRAIT)
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}
如果没有设置期望的方向,则手机将根据传感器数据重置方向。
我尝试过在方法中不调用super,因为我认为它可能会设置错误,但是这样会导致异常“未调用Super”。
我已经尝试了两天,还没有找到解决这个问题的方法。
onConfigurationChanged()
事件,尽管存在您提到的锁定吗? - 10s