8

是否有任何事件或侦听器触发@方向时间更改?

或者,如何发现手机的方向改变了?

谢谢你

4

6 回答 6

4

据我所知,有一个听众,

查看http://developer.android.com/reference/android/view/OrientationListener.html

那是类看看那里。

希望有帮助。

于 2011-12-12T14:18:28.500 回答
4

您需要阅读处理运行时更改

它解释了处理方向变化等事情的旧方法。

Fragments推出以来,他们已经实现了一种新的方法(类似于旧方法) - 但如果您不使用它,使用Fragments它就没有任何意义。

于 2011-12-12T14:30:26.753 回答
2

您可以改用 OrientationEventListener 类! http://developer.android.com/reference/android/view/OrientationEventListener.html

于 2013-01-24T11:11:48.603 回答
1

如果您对方向更改何时触发重新显示布局更感兴趣,您可能需要查看:http: //developer.android.com/reference/android/view/View.OnLayoutChangeListener.html

“当视图的布局边界由于布局处理而发生变化时,将调用回调的接口定义。”

于 2014-02-13T14:23:10.047 回答
0

由于 onConfigurationChanged 未检测到 180° 旋转,

在此处查看更好的答案: 如何检测屏幕旋转

于 2014-06-11T15:15:14.283 回答
-1

在某些手机上,方向更改事件在实际调整大小事件之前触发。当您需要知道何时调整表单大小时,不建议您使用方向更改事件。

只需使用 $(window).resize(function(){ 要做的事情 })

如果您需要动态调整大小事件并在某些时候更改它,您可以使用这样的结构

function ResizeEventHandler (){
  var resizeEvent = function(){}

  this.ResizeEvent = function(value){
        if (value!=null) resizeEvent = value;               
        else return resizeEvent()
  }
}

var ResizeEventHandlerInstance = new ResizeEventHandler();

$(window).resize(function(){ ResizeEventHandlerInstance.ResizeEvent();   });

function YourDinamicalEventSetterFunction(){
    ResizeEventHandlerInstance.ResizeEvent(function(){
               alert('resized');
    });
}

基本上当您需要更改调整大小事件时 -> 更改 ResizeEventHandlerInstance... 当您想要更改它时,您不需要一直取消绑定事件

于 2013-02-28T09:14:53.243 回答