是否可以动态设置纵向模式和横向模式? 例如,我需要使应用程序在横向和纵向模式下适用于大型MDPI,大型HDPI和Xlarge
对于其他分辨率,例如普通hdpi,普通hdpi等,我只需要肖像模式。
有人可以帮助我吗?
答案 0 :(得分:1)
是的,可以强迫这样的事情。您可以检测设备的密度,并可以加载相应的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);
但是因为你能做到这一点,并不意味着你应该这样做。而且我认为这不是最好的方法。我真的认为你应该read this documentation.
答案 1 :(得分:0)
您可以像这样动态设置方向:
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;
}