{"id":529,"date":"2023-06-21T20:03:00","date_gmt":"2023-06-21T12:03:00","guid":{"rendered":"https:\/\/www.gzlcy.cn\/?p=529"},"modified":"2023-06-21T20:03:00","modified_gmt":"2023-06-21T12:03:00","slug":"android11-0-%e4%bf%ae%e6%94%b9%e7%b3%bb%e7%bb%9f%e9%bb%98%e8%ae%a4%e5%ad%97%e4%bd%93%e5%a4%a7%e5%b0%8f","status":"publish","type":"post","link":"http:\/\/www.gzlcy.cn\/?p=529","title":{"rendered":"Android11.0 \u4fee\u6539\u7cfb\u7edf\u9ed8\u8ba4\u5b57\u4f53\u5927\u5c0f"},"content":{"rendered":"<p>\u4ece\u8bbe\u7f6e\u4e2d\u53ef\u4ee5\u770b\u5230<a href='https:\/\/www.gzlcy.cn\/?p=335' title='\u5b57\u4f53' target='_blank' rel=\"noopener\">\u5b57\u4f53<\/a>\u8bbe\u7f6e\u6709\u56db\u4e2a\u7b49\u7ea7&#8221;\u5c0f\uff0c<a href='https:\/\/www.gzlcy.cn\/?p=212' title='\u9ed8\u8ba4' target='_blank' rel=\"noopener\">\u9ed8\u8ba4<\/a>\uff0c\u5927\uff0c\u6700\u5927&#8221;\uff0c\u4e00\u822c\u90fd\u662f\u4f7f\u7528\u9ed8\u8ba4\u7684\u3002\u6709\u7684\u4ea7\u54c1\u4f7f\u7528\u9ed8\u8ba4\u5b57\u4f53\u4f1a\u663e\u5927\u6216\u8005\u663e\u5c0f\uff0c\u6211\u4eec\u9700\u8981\u6839\u636e<a href='https:\/\/www.gzlcy.cn\/?p=182' title='\u5b9e\u9645' target='_blank' rel=\"noopener\">\u5b9e\u9645<\/a>\u9700\u6c42\u6765\u4fee\u6539\u3002<\/p>\n<p>1.\u5b57\u4f53<a href='https:\/\/www.gzlcy.cn\/?p=524' title='\u5927\u5c0f' target='_blank' rel=\"noopener\">\u5927\u5c0f<\/a>\u8bbe\u7f6e\u76f8\u5173\u5185\u5bb9<\/p>\n<p><pre><code class=\"prism language-java\"> <span class=\"token operator\">&lt;<\/span><span class=\"token class-name\">SwitchPreference<\/span>\n      android<span class=\"token operator\">:<\/span>key<span class=\"token operator\">=<\/span><span class=\"token string\">\"peak_refresh_rate\"<\/span>\n      android<span class=\"token operator\">:<\/span>title<span class=\"token operator\">=<\/span><span class=\"token string\">\"@string\/peak_refresh_rate_title\"<\/span>\n      android<span class=\"token operator\">:<\/span>summary<span class=\"token operator\">=<\/span><span class=\"token string\">\"@string\/peak_refresh_rate_summary\"<\/span>\n      settings<span class=\"token operator\">:<\/span>controller<span class=\"token operator\">=<\/span><span class=\"token string\">\"com.android.settings.display.PeakRefreshRatePreferenceController\"<\/span> <span class=\"token operator\">\/<\/span><span class=\"token operator\">&gt;<\/span>\n      \n <span class=\"token operator\">&lt;<\/span><span class=\"token operator\">!<\/span><span class=\"token operator\">--<\/span> \u5b57\u4f53\u5927\u5c0f\u8bbe\u7f6e <span class=\"token operator\">--<\/span><span class=\"token operator\">&gt;<\/span>\n <span class=\"token operator\">&lt;<\/span><span class=\"token class-name\">Preference<\/span>\n      android<span class=\"token operator\">:<\/span>key<span class=\"token operator\">=<\/span><span class=\"token string\">\"font_size\"<\/span>\n      android<span class=\"token operator\">:<\/span>title<span class=\"token operator\">=<\/span><span class=\"token string\">\"@string\/title_font_size\"<\/span>\n      android<span class=\"token operator\">:<\/span>fragment<span class=\"token operator\">=<\/span><span class=\"token string\">\"com.android.settings.display.ToggleFontSizePreferenceFragment\"<\/span>\n      settings<span class=\"token operator\">:<\/span>controller<span class=\"token operator\">=<\/span><span class=\"token string\">\"com.android.settings.display.FontSizePreferenceController\"<\/span> <span class=\"token operator\">\/<\/span><span class=\"token operator\">&gt;<\/span>\n      \n <span class=\"token operator\">&lt;<\/span><span class=\"token operator\">!<\/span><span class=\"token operator\">--<\/span> \u663e\u793a\u5927\u5c0f\u8bbe\u7f6e<span class=\"token operator\">--<\/span><span class=\"token operator\">&gt;<\/span>\n <span class=\"token operator\">&lt;<\/span><span class=\"token class-name\"><span class=\"token namespace\">com<span class=\"token punctuation\">.<\/span>android<span class=\"token punctuation\">.<\/span>settings<span class=\"token punctuation\">.<\/span>display<span class=\"token punctuation\">.<\/span><\/span>ScreenZoomPreference<\/span>\n      android<span class=\"token operator\">:<\/span>key<span class=\"token operator\">=<\/span><span class=\"token string\">\"display_settings_screen_zoom\"<\/span>\n      android<span class=\"token operator\">:<\/span>title<span class=\"token operator\">=<\/span><span class=\"token string\">\"@string\/screen_zoom_title\"<\/span>\n      android<span class=\"token operator\">:<\/span>fragment<span class=\"token operator\">=<\/span><span class=\"token string\">\"com.android.settings.display.ScreenZoomSettings\"<\/span><span class=\"token operator\">\/<\/span><span class=\"token operator\">&gt;<\/span>\n<\/code><\/pre>\n<\/p>\n<p>\u53ef\u4ee5\u770b\u5230\u5b57\u4f53\u8bbe\u7f6e\u663e\u793a\u548c\u63a7\u5236\u76f8\u5173\u7684fragment\u548ccontroller\u3002<\/p>\n<p><pre><code class=\"prism language-java\"> <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">FontSizePreferenceController<\/span> <span class=\"token keyword\">extends<\/span> <span class=\"token class-name\">BasePreferenceController<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token keyword\">public<\/span> <span class=\"token class-name\">FontSizePreferenceController<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Context<\/span> context<span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">String<\/span> key<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n        <span class=\"token keyword\">super<\/span><span class=\"token punctuation\">(<\/span>context<span class=\"token punctuation\">,<\/span> key<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token punctuation\">}<\/span>\n    <span class=\"token annotation punctuation\">@Override<\/span>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">int<\/span> <span class=\"token function\">getAvailabilityStatus<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n        <span class=\"token keyword\">return<\/span> AVAILABLE<span class=\"token punctuation\">;<\/span>\n    <span class=\"token punctuation\">}<\/span>\n    <span class=\"token annotation punctuation\">@Override<\/span>\n    <span class=\"token keyword\">public<\/span> <span class=\"token class-name\">CharSequence<\/span> <span class=\"token function\">getSummary<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n        <span class=\"token keyword\">final<\/span> <span class=\"token keyword\">float<\/span> currentScale <span class=\"token operator\">=<\/span> <span class=\"token class-name\">Settings<span class=\"token punctuation\">.<\/span>System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getFloat<\/span><span class=\"token punctuation\">(<\/span>mContext<span class=\"token punctuation\">.<\/span><span class=\"token function\">getContentResolver<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n                <span class=\"token class-name\">Settings<span class=\"token punctuation\">.<\/span>System<\/span><span class=\"token punctuation\">.<\/span>FONT_SCALE<span class=\"token punctuation\">,<\/span> <span class=\"token number\">1.0f<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token keyword\">final<\/span> <span class=\"token class-name\">Resources<\/span> res <span class=\"token operator\">=<\/span> mContext<span class=\"token punctuation\">.<\/span><span class=\"token function\">getResources<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token keyword\">final<\/span> <span class=\"token class-name\">String<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> entries <span class=\"token operator\">=<\/span> res<span class=\"token punctuation\">.<\/span><span class=\"token function\">getStringArray<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">R<\/span><span class=\"token punctuation\">.<\/span>array<span class=\"token punctuation\">.<\/span>entries_font_size<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token keyword\">final<\/span> <span class=\"token class-name\">String<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> strEntryValues <span class=\"token operator\">=<\/span> res<span class=\"token punctuation\">.<\/span><span class=\"token function\">getStringArray<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">R<\/span><span class=\"token punctuation\">.<\/span>array<span class=\"token punctuation\">.<\/span>entryvalues_font_size<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token keyword\">final<\/span> <span class=\"token keyword\">int<\/span> index <span class=\"token operator\">=<\/span> <span class=\"token class-name\">ToggleFontSizePreferenceFragment<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">fontSizeValueToIndex<\/span><span class=\"token punctuation\">(<\/span>currentScale<span class=\"token punctuation\">,<\/span>\n                strEntryValues<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n        <span class=\"token keyword\">return<\/span> entries<span class=\"token punctuation\">[<\/span>index<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token punctuation\">}<\/span>\n <span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<\/p>\n<p><pre><code class=\"prism language-java\"> <span class=\"token annotation punctuation\">@Override<\/span>\n <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">onCreate<\/span><span class=\"token punctuation\">(<\/span><span class=\"token annotation punctuation\">@Nullable<\/span> <span class=\"token class-name\">Bundle<\/span> savedInstanceState<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n     <span class=\"token keyword\">super<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">onCreate<\/span><span class=\"token punctuation\">(<\/span>savedInstanceState<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n     <span class=\"token keyword\">final<\/span> <span class=\"token class-name\">Resources<\/span> res <span class=\"token operator\">=<\/span> <span class=\"token function\">getContext<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getResources<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n     <span class=\"token keyword\">final<\/span> <span class=\"token class-name\">ContentResolver<\/span> resolver <span class=\"token operator\">=<\/span> <span class=\"token function\">getContext<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getContentResolver<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n     <span class=\"token comment\">\/\/ Mark the appropriate item in the preferences list.<\/span>\n     mEntries <span class=\"token operator\">=<\/span> res<span class=\"token punctuation\">.<\/span><span class=\"token function\">getStringArray<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">R<\/span><span class=\"token punctuation\">.<\/span>array<span class=\"token punctuation\">.<\/span>entries_font_size<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n     <span class=\"token keyword\">final<\/span> <span class=\"token class-name\">String<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> strEntryValues <span class=\"token operator\">=<\/span> res<span class=\"token punctuation\">.<\/span><span class=\"token function\">getStringArray<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">R<\/span><span class=\"token punctuation\">.<\/span>array<span class=\"token punctuation\">.<\/span>entryvalues_font_size<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n     <span class=\"token keyword\">final<\/span> <span class=\"token keyword\">float<\/span> currentScale <span class=\"token operator\">=<\/span>\n             <span class=\"token class-name\">Settings<span class=\"token punctuation\">.<\/span>System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getFloat<\/span><span class=\"token punctuation\">(<\/span>resolver<span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">Settings<span class=\"token punctuation\">.<\/span>System<\/span><span class=\"token punctuation\">.<\/span>FONT_SCALE<span class=\"token punctuation\">,<\/span> <span class=\"token number\">1.0f<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n     mInitialIndex <span class=\"token operator\">=<\/span> <span class=\"token function\">fontSizeValueToIndex<\/span><span class=\"token punctuation\">(<\/span>currentScale<span class=\"token punctuation\">,<\/span> strEntryValues<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n     mValues <span class=\"token operator\">=<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token keyword\">float<\/span><span class=\"token punctuation\">[<\/span>strEntryValues<span class=\"token punctuation\">.<\/span>length<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span>\n     <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">=<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> strEntryValues<span class=\"token punctuation\">.<\/span>length<span class=\"token punctuation\">;<\/span> <span class=\"token operator\">++<\/span>i<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n         mValues<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token class-name\">Float<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">parseFloat<\/span><span class=\"token punctuation\">(<\/span>strEntryValues<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n     <span class=\"token punctuation\">}<\/span>\n     <span class=\"token function\">getActivity<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">setTitle<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">R<\/span><span class=\"token punctuation\">.<\/span>string<span class=\"token punctuation\">.<\/span>title_font_size<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n <span class=\"token punctuation\">}<\/span>\n \n <span class=\"token annotation punctuation\">@Override<\/span>\n <span class=\"token keyword\">protected<\/span> <span class=\"token class-name\">Configuration<\/span> <span class=\"token function\">createConfig<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Configuration<\/span> origConfig<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> index<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n     <span class=\"token comment\">\/\/ Populate the sample layouts.<\/span>\n     <span class=\"token keyword\">final<\/span> <span class=\"token class-name\">Configuration<\/span> config <span class=\"token operator\">=<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">Configuration<\/span><span class=\"token punctuation\">(<\/span>origConfig<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n     config<span class=\"token punctuation\">.<\/span>fontScale <span class=\"token operator\">=<\/span> mValues<span class=\"token punctuation\">[<\/span>index<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span>\n     <span class=\"token keyword\">return<\/span> config<span class=\"token punctuation\">;<\/span>\n <span class=\"token punctuation\">}<\/span>\n <span class=\"token comment\">\/**\n  * Persists the selected font size.\n  *\/<\/span>\n <span class=\"token annotation punctuation\">@Override<\/span>\n <span class=\"token keyword\">protected<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">commit<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n     <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token function\">getContext<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">==<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">return<\/span><span class=\"token punctuation\">;<\/span>\n     <span class=\"token keyword\">final<\/span> <span class=\"token class-name\">ContentResolver<\/span> resolver <span class=\"token operator\">=<\/span> <span class=\"token function\">getContext<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getContentResolver<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n     <span class=\"token class-name\">Settings<span class=\"token punctuation\">.<\/span>System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">putFloat<\/span><span class=\"token punctuation\">(<\/span>resolver<span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">Settings<span class=\"token punctuation\">.<\/span>System<\/span><span class=\"token punctuation\">.<\/span>FONT_SCALE<span class=\"token punctuation\">,<\/span> mValues<span class=\"token punctuation\">[<\/span>mCurrentIndex<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n <span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<\/p>\n<p>\u53ef\u4ee5\u770b\u5230\u4ee3\u7801\uff0c\u5b57\u4f53\u8bbe\u7f6e\u4e2d\u663e\u793a\u548c\u8bbe\u7f6e\u90fd\u662f\u64cd\u4f5cSettings.System.FONT_SCALE\u8fd9\u4e2a\u7cfb\u7edf\u5c5e\u6027\u503c\uff0c\u5f53\u4f60\u8bbe\u7f6e\u5b57\u4f53\u5927\u5c0f\u540e\u4f1a\u5148\u6539\u53d8\u8fd9\u4e2a\u5c5e\u6027\u7684\u503c\uff0c\u7136\u540e\u7cfb\u7edf\u76d1\u542c\u5230\u8fd9\u4e2a\u5c5e\u6027\u503c\u53d8\u5316\u4e4b\u540e\u53bb\u6539\u53d8\u6574\u4e2a\u7cfb\u7edf\u5b57\u4f53\u5927\u5c0f\u3002\u5177\u4f53\u7684\u66f4\u65b0\u7cfb\u7edf\u5b57\u4f53\u5927\u5c0f\u7684\u903b\u8f91\u5728ActivityTaskManagerService\u8fd9\u4e2a\u670d\u52a1\u4e2d\u3002<\/p>\n<p><pre><code class=\"prism language-java\"> <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">FontScaleSettingObserver<\/span> <span class=\"token keyword\">extends<\/span> <span class=\"token class-name\">ContentObserver<\/span> <span class=\"token punctuation\">{<\/span>\n     <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token class-name\">Uri<\/span> mFontScaleUri <span class=\"token operator\">=<\/span> <span class=\"token class-name\">Settings<span class=\"token punctuation\">.<\/span>System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getUriFor<\/span><span class=\"token punctuation\">(<\/span>FONT_SCALE<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n     <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token class-name\">Uri<\/span> mHideErrorDialogsUri <span class=\"token operator\">=<\/span> <span class=\"token class-name\">Settings<span class=\"token punctuation\">.<\/span>Global<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getUriFor<\/span><span class=\"token punctuation\">(<\/span>HIDE_ERROR_DIALOGS<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n     <span class=\"token keyword\">public<\/span> <span class=\"token class-name\">FontScaleSettingObserver<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n         <span class=\"token keyword\">super<\/span><span class=\"token punctuation\">(<\/span>mH<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n         <span class=\"token keyword\">final<\/span> <span class=\"token class-name\">ContentResolver<\/span> resolver <span class=\"token operator\">=<\/span> mContext<span class=\"token punctuation\">.<\/span><span class=\"token function\">getContentResolver<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n         resolver<span class=\"token punctuation\">.<\/span><span class=\"token function\">registerContentObserver<\/span><span class=\"token punctuation\">(<\/span>mFontScaleUri<span class=\"token punctuation\">,<\/span> <span class=\"token boolean\">false<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">UserHandle<\/span><span class=\"token punctuation\">.<\/span>USER_ALL<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n         resolver<span class=\"token punctuation\">.<\/span><span class=\"token function\">registerContentObserver<\/span><span class=\"token punctuation\">(<\/span>mHideErrorDialogsUri<span class=\"token punctuation\">,<\/span> <span class=\"token boolean\">false<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">,<\/span>\n                 <span class=\"token class-name\">UserHandle<\/span><span class=\"token punctuation\">.<\/span>USER_ALL<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n     <span class=\"token punctuation\">}<\/span>\n        \n     <span class=\"token annotation punctuation\">@Override<\/span>\n     <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">onChange<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">boolean<\/span> selfChange<span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">Collection<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">Uri<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> uris<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> flags<span class=\"token punctuation\">,<\/span>\n             <span class=\"token annotation punctuation\">@UserIdInt<\/span> <span class=\"token keyword\">int<\/span> userId<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n         <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Uri<\/span> uri <span class=\"token operator\">:<\/span> uris<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n             <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>mFontScaleUri<span class=\"token punctuation\">.<\/span><span class=\"token function\">equals<\/span><span class=\"token punctuation\">(<\/span>uri<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n                 <span class=\"token function\">updateFontScaleIfNeeded<\/span><span class=\"token punctuation\">(<\/span>userId<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n             <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>mHideErrorDialogsUri<span class=\"token punctuation\">.<\/span><span class=\"token function\">equals<\/span><span class=\"token punctuation\">(<\/span>uri<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n                 <span class=\"token keyword\">synchronized<\/span> <span class=\"token punctuation\">(<\/span>mGlobalLock<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n                     <span class=\"token function\">updateShouldShowDialogsLocked<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">getGlobalConfiguration<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n                 <span class=\"token punctuation\">}<\/span>\n             <span class=\"token punctuation\">}<\/span>\n         <span class=\"token punctuation\">}<\/span>\n     <span class=\"token punctuation\">}<\/span>\n <span class=\"token punctuation\">}<\/span>\n \n <span class=\"token punctuation\">.<\/span><span class=\"token punctuation\">.<\/span><span class=\"token punctuation\">.<\/span>\n \n <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">updateFontScaleIfNeeded<\/span><span class=\"token punctuation\">(<\/span><span class=\"token annotation punctuation\">@UserIdInt<\/span> <span class=\"token keyword\">int<\/span> userId<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n     <span class=\"token keyword\">final<\/span> <span class=\"token keyword\">float<\/span> scaleFactor <span class=\"token operator\">=<\/span> <span class=\"token class-name\">Settings<span class=\"token punctuation\">.<\/span>System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getFloatForUser<\/span><span class=\"token punctuation\">(<\/span>mContext<span class=\"token punctuation\">.<\/span><span class=\"token function\">getContentResolver<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n             FONT_SCALE<span class=\"token punctuation\">,<\/span> <span class=\"token number\">1.0f<\/span><span class=\"token punctuation\">,<\/span> userId<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n     <span class=\"token keyword\">synchronized<\/span> <span class=\"token punctuation\">(<\/span>mGlobalLock<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n         <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token function\">getGlobalConfiguration<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>fontScale <span class=\"token operator\">==<\/span> scaleFactor<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n             <span class=\"token keyword\">return<\/span><span class=\"token punctuation\">;<\/span>\n         <span class=\"token punctuation\">}<\/span>\n         <span class=\"token keyword\">final<\/span> <span class=\"token class-name\">Configuration<\/span> configuration\n                 <span class=\"token operator\">=<\/span> mWindowManager<span class=\"token punctuation\">.<\/span><span class=\"token function\">computeNewConfiguration<\/span><span class=\"token punctuation\">(<\/span>DEFAULT_DISPLAY<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n         configuration<span class=\"token punctuation\">.<\/span>fontScale <span class=\"token operator\">=<\/span> scaleFactor<span class=\"token punctuation\">;<\/span>\n         <span class=\"token function\">updatePersistentConfiguration<\/span><span class=\"token punctuation\">(<\/span>configuration<span class=\"token punctuation\">,<\/span> userId<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n     <span class=\"token punctuation\">}<\/span>\n <span class=\"token punctuation\">}<\/span>\n<\/code><\/pre>\n<\/p>\n<p>\u6240\u4ee5\u6211\u4eec\u60f3\u8981\u8bbe\u7f6e\u9ed8\u8ba4\u5b57\u4f53\u5927\u5c0f\uff0c\u76f4\u63a5\u4fee\u6539Settings.System.FONT_SCALE\u8fd9\u4e2a\u5c5e\u6027\u503c\u3002<\/p>\n<p>2.\u4fee\u6539\u9ed8\u8ba4\u5b57\u4f53\u5927\u5c0f<\/p>\n<p><pre><code class=\"prism language-java\"> <span class=\"token operator\">&lt;<\/span>string<span class=\"token operator\">-<\/span>array name<span class=\"token operator\">=<\/span><span class=\"token string\">\"entries_font_size\"<\/span><span class=\"token operator\">&gt;<\/span>\n     <span class=\"token operator\">&lt;<\/span>item msgid<span class=\"token operator\">=<\/span><span class=\"token string\">\"6490061470416867723\"<\/span><span class=\"token operator\">&gt;<\/span><span class=\"token class-name\">Small<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span>item<span class=\"token operator\">&gt;<\/span>\n     <span class=\"token operator\">&lt;<\/span>item msgid<span class=\"token operator\">=<\/span><span class=\"token string\">\"3579015730662088893\"<\/span><span class=\"token operator\">&gt;<\/span><span class=\"token class-name\">Default<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span>item<span class=\"token operator\">&gt;<\/span>\n     <span class=\"token operator\">&lt;<\/span>item msgid<span class=\"token operator\">=<\/span><span class=\"token string\">\"1678068858001018666\"<\/span><span class=\"token operator\">&gt;<\/span><span class=\"token class-name\">Large<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span>item<span class=\"token operator\">&gt;<\/span>\n     <span class=\"token operator\">&lt;<\/span>item msgid<span class=\"token operator\">=<\/span><span class=\"token string\">\"490158884605093126\"<\/span><span class=\"token operator\">&gt;<\/span><span class=\"token class-name\">Largest<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span>item<span class=\"token operator\">&gt;<\/span>\n <span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span>string<span class=\"token operator\">-<\/span>array<span class=\"token operator\">&gt;<\/span>\n <span class=\"token operator\">&lt;<\/span>string<span class=\"token operator\">-<\/span>array name<span class=\"token operator\">=<\/span><span class=\"token string\">\"entryvalues_font_size\"<\/span> translatable<span class=\"token operator\">=<\/span><span class=\"token string\">\"false\"<\/span><span class=\"token operator\">&gt;<\/span>\n     <span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span>item<span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token number\">0.85<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span>item<span class=\"token operator\">&gt;<\/span>\n     <span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span>item<span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token number\">1.0<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span>item<span class=\"token operator\">&gt;<\/span>\n     <span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span>item<span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token number\">1.15<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span>item<span class=\"token operator\">&gt;<\/span>\n     <span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span>item<span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token number\">1.30<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span>item<span class=\"token operator\">&gt;<\/span>\n <span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span>string<span class=\"token operator\">-<\/span>array<span class=\"token operator\">&gt;<\/span>\n<\/code><\/pre>\n<\/p>\n<p>\u8fd9\u4e2a<a href='https:\/\/www.gzlcy.cn\/?p=202' title='\u6570\u7ec4' target='_blank' rel=\"noopener\">\u6570\u7ec4<\/a>\u662f\u5b57\u4f53\u5927\u5c0f\u8bbe\u7f6e\u7684\u914d\u7f6e\uff0c\u6bd4\u5982\u6211\u4eec\u60f3\u8981\u8bbe\u7f6e\u7cfb\u7edf\u5b57\u4f53\u9ed8\u8ba4\u6700\u5c0f\uff0c\u6dfb\u52a0\u5982\u4e0b\u914d\u7f6e\uff1a<\/p>\n<p><pre><code class=\"prism language-java\"> <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">loadSystemSettings<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">SQLiteDatabase<\/span> db<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n     <span class=\"token class-name\">SQLiteStatement<\/span> stmt <span class=\"token operator\">=<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">;<\/span>\n     <span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<\/span>\n         stmt <span class=\"token operator\">=<\/span> db<span class=\"token punctuation\">.<\/span><span class=\"token function\">compileStatement<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"INSERT OR IGNORE INTO system(name,value)\"<\/span>\n                 <span class=\"token operator\">+<\/span> <span class=\"token string\">\" VALUES(?,?);\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n         <span class=\"token punctuation\">.<\/span><span class=\"token punctuation\">.<\/span><span class=\"token punctuation\">.<\/span>\n         <span class=\"token comment\">\/\/ add for set default font<\/span>\n         <span class=\"token function\">loadFractionSetting<\/span><span class=\"token punctuation\">(<\/span>stmt<span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">Settings<span class=\"token punctuation\">.<\/span>System<\/span><span class=\"token punctuation\">.<\/span>FONT_SCALE<span class=\"token punctuation\">,<\/span>\n                    <span class=\"token class-name\">R<\/span><span class=\"token punctuation\">.<\/span>fraction<span class=\"token punctuation\">.<\/span>def_font_size_scale<span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n         <span class=\"token comment\">\/\/ add end           <\/span>\n<\/code><\/pre>\n<\/p>\n<p><pre><code class=\"prism language-java\"> <span class=\"token operator\">&lt;<\/span><span class=\"token operator\">!<\/span><span class=\"token operator\">--<\/span> <span class=\"token class-name\">Default<\/span> font size <span class=\"token number\">0.85<\/span><span class=\"token operator\">\/<\/span><span class=\"token number\">1.0<\/span><span class=\"token operator\">\/<\/span><span class=\"token number\">1.15<\/span><span class=\"token operator\">\/<\/span><span class=\"token number\">1.30<\/span> <span class=\"token operator\">--<\/span><span class=\"token operator\">&gt;<\/span>\n <span class=\"token operator\">&lt;<\/span>fraction name<span class=\"token operator\">=<\/span><span class=\"token string\">\"def_font_size_scale\"<\/span><span class=\"token operator\">&gt;<\/span><span class=\"token number\">85<\/span><span class=\"token operator\">%<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token operator\">\/<\/span>fraction<span class=\"token operator\">&gt;<\/span>\n<\/code><\/pre><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4ece\u8bbe\u7f6e\u4e2d\u53ef\u4ee5\u770b\u5230\u5b57\u4f53\u8bbe\u7f6e\u6709\u56db\u4e2a\u7b49\u7ea7<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[1008,494,87,255,91],"_links":{"self":[{"href":"http:\/\/www.gzlcy.cn\/index.php?rest_route=\/wp\/v2\/posts\/529"}],"collection":[{"href":"http:\/\/www.gzlcy.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.gzlcy.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.gzlcy.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.gzlcy.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=529"}],"version-history":[{"count":0,"href":"http:\/\/www.gzlcy.cn\/index.php?rest_route=\/wp\/v2\/posts\/529\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.gzlcy.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=529"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.gzlcy.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=529"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.gzlcy.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=529"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}