2012-04-09 120 views
5

我正在开发的应用程序包含2个独立的布局:一个用于普通电话,另一个用于小型平板电脑,如NOOKcolor。这是根据屏幕宽度分辨率决定的(当前是600dip)。它在Nook上看起来很棒,但在拥有720 x 1280显示屏的HTC Rezound上很糟糕。对于后者,无论分辨率更高,所有内容(文本,图像等)看起来都大得多,所以它们都聚集起来。Android - 检测小型平板电脑vs大手机?

什么是选择合适设备的好方法?也许检测物理尺寸(4.3“vs 7”)与分辨率?

+0

有一个Configuration.screenLayout位掩码 - 在这里看到http://stackoverflow.com/questions/5015094 /确定设备屏幕类别小正常大x使用代码 – dag 2012-04-09 22:08:38

回答

4

用下面的方法来检测设备的屏幕尺寸:

/** 
    * Checks if the screen size is equal or above given length 
    * @param activity activity screen 
    * @param screen_size diagonal size of screen, for example 7.0 inches 
    * @return True if its equal or above, else false 
    */ 
    public static boolean checkScreenSize(Activity activity, double screen_size) 
    { 
     Display display = activity.getWindowManager().getDefaultDisplay(); 
     DisplayMetrics displayMetrics = new DisplayMetrics(); 
     display.getMetrics(displayMetrics); 

     int width = displayMetrics.widthPixels/displayMetrics.densityDpi; 
     int height = displayMetrics.heightPixels/displayMetrics.densityDpi; 

     double screenDiagonal = Math.sqrt(width * width + height * height); 
     return (screenDiagonal >= screen_size); 
    } 
+0

啊哈!密度是关键!谢谢,这似乎工作 – Bostone 2012-04-09 22:47:14

+0

什么?我把7.0作为输入参数,并且它对我的Kindle Fire返回false。 – 2012-05-23 16:23:21

+0

奇怪,因为我在我的设备上测试过它,它的工作状态非常好。尝试在* return *之前记录'screenDiagonal'并查看它为设备实际计算的值 – waqaslam 2012-05-24 07:33:02

1

查看Supporting Multiple Screens的文档。您可以按照预先确定的文件夹命名结构进行操作,以便Android为不同的屏幕尺寸/密度加载不同的布局和绘图。

例如:

res/layout/my_layout.xml    // layout for normal screen size ("default") 
res/layout-small/my_layout.xml  // layout for small screen size 
res/layout-large/my_layout.xml  // layout for large screen size 
res/layout-xlarge/my_layout.xml  // layout for extra large screen size 
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation 

res/drawable-mdpi/my_icon.png  // bitmap for medium density 
res/drawable-hdpi/my_icon.png  // bitmap for high density 
res/drawable-xhdpi/my_icon.png  // bitmap for extra high density 
+0

对于预蜂窝,这有点无用 – Bostone 2012-04-09 22:31:59

相关问题