以编程方式更改系统显示大小Android N
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以编程方式更改系统显示大小Android N相关的知识,希望对你有一定的参考价值。
Background:除了以前存在的更改Display Size
的功能外,android N还具有从设置更改系统Font Size
的功能。
更改显示尺寸:
Image Source:pcmag.com
问题:
[如果应用具有android.permission.WRITE_SETTINGS
权限来更改设置,则有一些方法可以按How to programmatically change font settings of Device: font style and font size?中所述以编程方式更改系统字体大小。但是我找不到一种以编程方式更改显示尺寸的方法。可能吗?
我尝试了什么?
我已经检查了Settings.System便捷功能列表中可能提供的选项,这些功能可通过编程方式更改设置。
更新:
我已经在此处打开了一个功能请求:https://code.google.com/p/android/issues/detail?id=214124。如果您觉得有用,请加注星标。
感谢您的提前帮助!
[引用Settings.System时,有[putConfiguration(ContentResolver cr, Configuration config)
](https://developer.android.com/reference/android/provider/Settings.System.html#putConfiguration(android.content.ContentResolver,android.content.res.Configuration))方法。使用此方法是:
便捷功能,用于从Configuration对象写入一批与配置相关的设置。
这既包括用户指定的配置选项(语言环境列表和缩放比例),又包括设备配置(例如输入模式,屏幕尺寸和屏幕方向)。
用屏幕尺寸的SCREENLAYOUT_SIZE_MASK 值设置配置。它是:
SCREENLAYOUT_SIZE_MASK位定义屏幕的整体大小。它们可以是SCREENLAYOUT_SIZE_SMALL,SCREENLAYOUT_SIZE_NORMAL,SCREENLAYOUT_SIZE_LARGE或SCREENLAYOUT_SIZE_XLARGE之一。
希望它对您有帮助。
清单中,正在申请中:android:configChanges="density"
在活动/应用程序中:
public void adjustDisplayScale(Configuration configuration)
if (configuration != null)
Log.d("TAG", "adjustDisplayScale: " + configuration.densityDpi);
if(configuration.densityDpi >= 485) //for 6 inch device OR for 538 ppi
configuration.densityDpi = 500; //decrease "display size" by ~30
else if(configuration.densityDpi >= 300) //for 5.5 inch device OR for 432 ppi
configuration.densityDpi = 400; //decrease "display size" by ~30
else if(configuration.densityDpi >= 100) //for 4 inch device OR for 233 ppi
configuration.densityDpi = 200; //decrease "display size" by ~30
DisplayMetrics metrics = getResources().getDisplayMetrics();
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
wm.getDefaultDisplay().getMetrics(metrics);
metrics.scaledDensity = configuration.densityDpi * metrics.density;
this.getResources().updateConfiguration(configuration, metrics);
在super.onCreate(..)之后调用它:
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
adjustDisplayScale( getResources().getConfiguration());
这将在“显示尺寸”的“较小”和“小”设置之间设置显示尺寸,从而覆盖用户设置的任何显示尺寸设置。对于4英寸,5.5英寸,6英寸等设备,它可以正确[。但是我敢肯定,比使用那些if语句更好的方法。
以上是关于以编程方式更改系统显示大小Android N的主要内容,如果未能解决你的问题,请参考以下文章
如何以编程方式更改整个应用程序中的字体大小,Android?
如何在 Android 2016 中以编程方式更改应用程序图标