是的,从Android 11开始,Android支持为不同屏幕设置不同的刷新率。可以使用DisplayManager类和Display.Mode类来获取屏幕和模式数据,然后使用SurfaceView或TextureView等视图来显示内容。
以下是示例代码,演示如何获取当前设备的屏幕和模式数据以及如何为SurfaceView设置刷新率:
// 获取DisplayManager实例
DisplayManager displayManager = (DisplayManager) getSystemService(Context.DISPLAY_SERVICE);
// 获取所有屏幕
Display[] displays = displayManager.getDisplays();
for (Display display : displays) {
// 获取所有模式
Display.Mode[] modes = display.getSupportedModes();
for (Display.Mode mode : modes) {
// 获取屏幕和模式数据
int refreshRate = (int) mode.getRefreshRate();
int width = mode.getPhysicalWidth();
int height = mode.getPhysicalHeight();
// 示例:设置SurfaceView刷新率
SurfaceView surfaceView = findViewById(R.id.surfaceView);
surfaceView.getHolder().setFixedSize(width, height);
surfaceView.setSecure(true);
surfaceView.setZOrderOnTop(true);
surfaceView.getHolder().setFormat(PixelFormat.RGBA_8888);
surfaceView.setRefreshRate(refreshRate); // 设置刷新率
}
}