如何根据设备动态设置方向?

时间:2013-05-21 05:25:28

标签: java android android-layout

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

对于其他分辨率,例如普通hdpi,普通hdpi等,我只需要肖像模式。

有人可以帮助我吗?

2 个答案:

答案 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;
}