是否可以动态设置纵向模式和横向模式?例如,我需要使应用程序在大型 MDPI、大型 HDPI 和 Xlarge 的横向和纵向模式下可用
对于普通 hdpi、普通 hdpi 等其他分辨率,我只需要纵向模式。
任何人都可以帮助我吗?
是否可以动态设置纵向模式和横向模式?例如,我需要使应用程序在大型 MDPI、大型 HDPI 和 Xlarge 的横向和纵向模式下可用
对于普通 hdpi、普通 hdpi 等其他分辨率,我只需要纵向模式。
任何人都可以帮助我吗?
是的,可以强制执行此类操作。您可以检测设备的密度并加载相应的 xml 文件。
您可以通过查看显示指标来检测密度:
DisplayMetrics metrics = getResources().getDisplayMetrics();
然后看着metrics.densityDpi
。然后,您可以相应地加载不同的资源。
int layoutId;
switch(metrics.densityDpi) {
case DisplayMetrics.DENSITY_LOW:
layoutId = R.layout.lowthingy
break;
case DisplayMetrics.DENSITY_MEDIUM:
layoutd = R.layout.mediumthingy
break;
... (for other densities)
}
setContentView(layoutID);
但仅仅因为你能做到这一点,并不意味着你应该这样做。而且我真的认为这不是最好的方法。我真的认为你应该阅读这个文档。
您可以像这样动态设置方向:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
和
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
您可以通过以下方式检查屏幕密度:
switch (getResources().getDisplayMetrics().densityDpi) {
case DisplayMetrics.DENSITY_LOW:
// ...
break;
case DisplayMetrics.DENSITY_MEDIUM:
// ...
break;
case DisplayMetrics.DENSITY_HIGH:
// ...
break;
case DisplayMetrics.DENSITY_XHIGH:
// ...
break;
}