请用androidviewIWindowManager类里面的 watchRotation方法写一个监听
屏幕旋转的监听器。
- 首先,我们需要创建一个实现了IWindowManager.Stub接口的类,并实现watchRotation方法。
private final IWindowManager.Stub mWindowManager = new IWindowManager.Stub() {
@Override
public void watchRotation(IRotationWatcher watcher, int displayId) throws RemoteException {
// 在这里处理屏幕旋转的监听逻辑
}
};
- 接着,在Activity或Service中,我们需要获取系统的WindowManager对象,并将我们实现的mWindowManager对象注册进去。
public class MyActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 获取系统的WindowManager对象
WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
try {
// 注册我们实现的mWindowManager对象
wm.watchRotation(mWindowManager, displayId);
} catch (RemoteException e) {
e.printStackTrace();
}
}
}
- 最后,在mWindowManager的watchRotation方法中,我们可以处理屏幕旋转的逻辑。
private final IWindowManager.Stub mWindowManager = new IWindowManager.Stub() {
@Override
public void watchRotation(IRotationWatcher watcher, int displayId) throws RemoteException {
// 在这里处理屏幕旋转的监听逻辑
int rotation = getDefaultDisplay().getRotation();
switch (rotation) {
case Surface.ROTATION_0:
// 屏幕正常显示
break;
case Surface.ROTATION_90:
// 屏幕顺时针旋转90度
break;
case Surface.ROTATION_180:
// 屏幕顺时针旋转180度
break;
case Surface.ROTATION_270:
// 屏幕顺时针旋转270度
break;
}
}
};
这样,我们就可以通过android.view.IWindowManager类里面的 watchRotation方法实现一个监听屏幕旋转的监听器
原文地址: https://www.cveoy.top/t/topic/cW5P 著作权归作者所有。请勿转载和采集!