Use display.on to listen for the orientation status changes.
To enable the window to rotate with the device:
1. Ability-level configuration: Configure the orientation property of abilities in the module.json5 file.
2. Dynamic setting: Use window.setPreferredOrientation to set the window orientation.
import { window, display } from '@kit.ArkUI';
const TAG = 'ScreenTest'
const ORIENTATION: Array<string> = ['Portrait', 'Landscape', 'Reverse Portrait', 'Reverse Landscape']
@Entry
@Component
struct ScreenTest {
context = this.getUIContext();
@State rotation: number = 0
@State message: string = ORIENTATION[this.rotation]
aboutToAppear() {
this.setOrientation()
let callback = async () => {
// ...
}
try {
display.on("change", callback); // Listen for screen state changes
} catch (exception) {
console.error(TAG, 'Failed to register callback. Code: ' + JSON.stringify(exception));
}
}
setOrientation() {
try {
window.getLastWindow(this.context.getHostContext(), (err, data) => { // Obtain the window instance.
if (err.code) {
console.error(TAG, 'Failed to obtain the top window. Cause: ' + JSON.stringify(err));
return;
}
let windowClass = data;
console.info(TAG, 'Succeeded in obtaining the top window. Data: ' + JSON.stringify(data));
let orientation = window.Orientation.AUTO_ROTATION; // Set the window orientation to AUTO_ROTATION.
try {
windowClass.setPreferredOrientation(orientation, (err) => {
if (err.code) {
console.error(TAG, 'Failed to set window orientation. Cause: ' + JSON.stringify(err));
return;
}
console.info(TAG, 'Succeeded in setting window orientation.');
});
} catch (exception) {
console.error(TAG, 'Failed to set window orientation. Cause: ' + JSON.stringify(exception));
}
;
});
} catch (exception) {
console.error(TAG, 'Failed to obtain the top window. Cause: ' + JSON.stringify(exception));
}
;
}
build() {
Row() {
Column() {
Text(`${this.rotation}`).fontSize(25)
Text(`${this.message}`).fontSize(25)
}
.width("100%")
}
.height("100%")
}
} Reference