0

是否可以动态设置纵向模式和横向模式?例如,我需要使应用程序在大型 MDPI、大型 HDPI 和 Xlarge 的横向和纵向模式下可用

对于普通 hdpi、普通 hdpi 等其他分辨率,我只需要纵向模式。

任何人都可以帮助我吗?

4

2 回答 2

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);

但仅仅因为你能做到这一点,并不意味着你应该这样做。而且我真的认为这不是最好的方法。我真的认为你应该阅读这个文档。

于 2013-05-21T05:43:21.093 回答
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;
}
于 2013-05-21T05:42:27.747 回答