我为屏幕创建了两个xml文件.一个名为“login-page.port.xml”,另一个名为“login-page.land.xaml”.
有没有办法以编程方式检测应用程序中的方向变化?
谢谢,
Keks
解决方法:
是的,有一种方法可以检测应用程序中的方向变化.最简单的方法是在您想要获得方向的页面中;将已加载和已卸载的事件添加到page.xml文件中:
<Page loaded="pageLoaded" unloaded="pageUnloaded">
var application=require('application');
exports.pageLoaded = function() {
application.on(application.orientationChangedEvent, setorientation);
};
exports.pageUnloaded = function() {
application.off(application.orientationChangedEvent, setorientation);
}
function setorientation(args) {
// Will console out the new Orientation
console.log(args.newValue);
}
几个笔记;
你要添加&在进入和退出页面时删除事件监听器;否则,监听器是全局的,即使您在另一个页面上,当方向发生变化时也会继续触发.
2.您可以为此事件添加多个侦听器,因此,如果您不删除侦听器,则每次重新加载此页面时,您将向该组添加此侦听器的另一个副本,因此它将触发多次因为你已经添加了它.
3.在v1.6.1中的android上,它们是方向触发中的错误. https://github.com/NativeScript/NativeScript/issues/1656(基本上如果你从横向开始,旋转它将无法检测到它.问题有我已经手动应用到我的代码的补丁).
现在看看你的实际例子;你是否意识到至少从1.6x版本的NativeScript开始,它只会加载当前设置为哪个方向的XML;但是在旋转时它不会加载另一个方向的xml.所以,如果你在景观;进入屏幕然后旋转它仍将使用Landscape xml文件.
现在所有这些说你可能会认真考虑查看我作为作者的nativescript-orientation插件,这个插件简化了处理屏幕方向,并允许你只有一个.xml文件,然后通过css更改东西.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。