调整到不同的屏幕尺寸不起作用?

时间:2014-03-10 02:46:27

标签: android screen

我认为我成功调整了不同的屏幕尺寸(我使用的是eclipse模拟器并创建不同的屏幕尺寸来测试我的应用程序)但是当我在实际设备上测试我的应用程序时,我的应用程序的结果会有所不同。例如,对于大屏幕尺寸,我将我的模拟器设置为Nexus S,它将工作并且看起来很好,但后来我尝试了Alcatel One Touch Fierce(真实设备)仍然被认为是大屏幕尺寸应用程序播放只是稍微关闭一下,然后我在另一个设备上播放,这也被认为是一个大屏幕尺寸应用程序将像模拟器一样播放。所以我想问题是为什么?关于我如何检查不同屏幕尺寸的评论如下:

    DisplayMetrics displayMetrics = new DisplayMetrics();
     getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
     switch(displayMetrics.densityDpi)
     { 
     case DisplayMetrics.DENSITY_LOW: 
        // layout for small sized devices.

        break; 
     case DisplayMetrics.DENSITY_MEDIUM: 
        // layout for medium-sized devices.


        break; 
     case DisplayMetrics.DENSITY_HIGH: 
                   // layout for large devices.

        break; 

     case DisplayMetrics.DENSITY_XHIGH:

                     // layout for really large devices.
        break; 

2 个答案:

答案 0 :(得分:1)

在您的案例陈述之前,尝试打印密度值,如下所示:

Log.i("Sushil", "displaymetrics.densityDpi : " + displaymetrics.densityDpi);

并检查它是否与您定义的任何案例陈述相符。否则添加新的案例陈述,它应该工作。几个定义的案例是:

DisplayMetrics.DENSITY_TV
DisplayMetrics.DENSITY_XXHIGH

希望这有帮助。

答案 1 :(得分:1)

我认为结果没有任何问题。如果您在平板电脑上运行手机模拟器上设计的应用程序,则布局将不匹配。

你必须决定是否要支持不同的屏幕大小,否则你必须为不同的屏幕尺寸创建不同的布局,并在你的活动的OnCreate方法中设置相应的布局。

以下是检查设备是平板电脑还是手机的方法:

if(isTablet==true){
   setContentView(R.Layout.my_tablet_layout);
 }else{
   setContentView(R.Layout.my_phone_layout);
 }



public boolean IsTablet() {

    return (getApplicationContext().getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE;

}