小编jee*_*evs的帖子

锁定屏幕方向

我正在制作一个允许您阅读维基百科页面的应用程序。

我想每次将手机从纵向旋转到横向时都显示一个图标,反之亦然。如果用户愿意,它将让用户锁定屏幕方向,否则屏幕将根据传感器数据进行定向。这个功能是由google play中的一些App实现的,例如——Pocket

要做到这一点,我已经覆盖了

public void onConfigurationChanged(Configuration newConfig)
Run Code Online (Sandbox Code Playgroud)

现在,如果我通过使用设置锁定配置(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);
        }
Run Code Online (Sandbox Code Playgroud)

然后方向设置正确,但是当手机旋转时不会调用 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);
}
Run Code Online (Sandbox Code Playgroud)

然后未设置所需的方向。手机根据传感器数据重置方向。

我什至没有在方法中调用超级,因为我认为它可能设置错误,但它给了我异常“超级未调用”。

我正在尝试过去 2 天,但没有解决此问题的任何方法。

android android-orientation

5
推荐指数
1
解决办法
1964
查看次数

输入单击时的角度引导模式打开

在我的控制器中,我有方法

  • $scope.openJukeboxesModalToGroup -- 打开模态弹出窗口
  • $scope.searchJukeboxes --- 在页面上搜索
  • $scope.keyPressed -- 捕获按键

在有形式的部分

<form class="form-inline" role="form" ng-submit="deadForm()">
    <div class="form-group">
         <button ng-click="openJukeboxesModalToGroup()" class="btn btn-info">Add Stores to Group</button>
    </div>
    <div class="form-group">
        <input type="text" ng-model="jukeboxFilter" ng-keypress="keyPressed($event, 'search')" class="form-control" placeholder="search">
    </div>
    <button type="button" ng-click="searchJukeboxes()" class="btn btn-info"><span class="glyphicon glyphicon-search"></span></button>
    <button type="button" ng-click="resetFilter()" class="btn btn-info"><span class="glyphicon glyphicon-repeat"></span></button>
</form>
Run Code Online (Sandbox Code Playgroud)

keyPressed 方法是

$scope.keyPressed = function($event, eventType) {
        $event.stopImmediatePropagation();
        if(eventType=='search') {
            if($event.which==13) {
                $scope.searchJukeboxes();
           }
       } 
 };
Run Code Online (Sandbox Code Playgroud)

每当有人在文本栏中键入内容并单击 Enter 时,我都会尝试开始搜索。但是我并没有以某种方式调用 openJukeboxesModalToGroup() 方法。我试图通过调用停止事件传播、更改 openJukeboxesModalToGroup() 方法的名称来阻止这种情况。但没有任何效果。对此有任何帮助。

deadForm() 方法是implement,我在chrome 控制台中没有收到任何错误。

javascript jquery angularjs angular-ui-bootstrap

1
推荐指数
1
解决办法
1989
查看次数