2013-05-13 66 views
1

我有两个布局文件夹:布局sw800dp和布局sw600dp所以我的应用程序使用布局sw600dp两个设备,三星Galaxy Tab 7的Nexus 7,它使Nexus 7的字体和样式更大!我如何区分这两个设备的布局? 由于提前Differerentiate布局具有相同的DPI两个设备

+1

使水库2个文件夹/ layout.nexus 7布局large- tvdpi,三星10.1 layout-xlarge-mdpi。 – Hemant 2013-05-13 05:14:51

+0

@Hemant:我会尝试你的评论。 tx – 2013-05-13 05:28:21

回答

0

解决:我已经做了两个布局文件夹布局tvdpi为Nexus 7和布局MDPI为三星Galaxy Tab 7

1

可以从下面的代码

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics); 
float widthInInches = metrics.widthPixels/metrics.xdpi; 
float heightInInches = metrics.heightPixels/metrics.ydpi; 
double sizeInInches = Math.sqrt(Math.pow(widthInInches, 2) 
      + Math.pow(heightInInches, 2)); 

这里sizeInInches检查10和7英寸表屏幕尺寸为您提供的表的适当英寸采取在缓冲液为0.5英寸,并给根据条件它如下所示。

boolean is7inchTablet = sizeInInches >= 6.5 && sizeInInches <= 7.5; 

只要你需要检查它,只需检查如下。

if(is7inchTablet){ 
    // do whatever for the 7-inch tablet 
}else{ 
    // do whatever for the 10-inch tablet 
} 
+0

+1谢谢你的快速回答。我知道​​我可以像你提到的那样获得设备的英寸数,但是为这样一个完整的应用程序的每个布局创造条件需要很长的时间!你有更快的方法来解决这个问题吗? – 2013-05-13 05:18:58

+0

只需要在一个基本活动或任何Util类中编写此代码并传递上下文。为什么你正在考虑在每个班级编写这些代码?我只在一个Util类中使用过,并检查条件。让我编辑一下.... – 2013-05-13 05:21:24

+0

如果我明白你的想法,每当我设置布局时,我应该检查此标志?所以我应该检查这个为我的应用程序中的每个片段和类? – 2013-05-13 05:27:27

相关问题