Android开发中,想要自己设置系统默认的屏幕缩放比列 在原生的setting中,Accessibility > DisPlay Size,可以设置屏幕缩放  个人思路是改变进度条的值,先跟着这个流程走一遍 1、首先找到这个界面对应的代码文件 packages\apps\Settings\src\com\android\settings\PreviewSeekBarPreferenceFragment.java 找到进度条拖动时的对应代码:
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
setPreviewLayer(progress, true);
if (!mSeekByTouch) {
commit();
}
}
commit()方法是在PreviewSeekBarPreferenceFragment.java的子类中ScreenZoomSettings.java实现的,对应目录: packages\apps\Settings\src\com\android\settings\display\ScreenZoomSettings.java
@Override
protected void commit() {
final int densityDpi = mValues[mCurrentIndex];
if (densityDpi == mDefaultDensity) {
DisplayDensityUtils.clearForcedDisplayDensity(Display.DEFAULT_DISPLAY);
} else {
DisplayDensityUtils.setForcedDisplayDensity(Display.DEFAULT_DISPLAY, densityDpi);
}
}
2、 找到关键代码后,使用adb调试一下我们想要的density值 我这里是拖到了Large,然后使用命令adb shell wm density获取:
C:\Users\123>adb shell wm density
Physical density: 160
Override density: 186
3、然后在SystemUI中设置我们想要的默认比例;frameworks/base/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java文件中onCreate()方法最后加上
if(SystemProperties.getBoolean("persist.sys.123firstboot", true)){
DisplayDensityUtils.setForcedDisplayDensity(Display.DEFAULT_DISPLAY, 186);
SystemProperties.set("persist.sys.123firstboot", "false");
}
结束。
|