Android:如果宽度小于特定DP,则提供资源

时间:2013-12-12 13:59:04

标签: android android-resources

如何在Android中使用资源限定符系统指定仅在宽度小于特定值时才应用资源?

详细说明,假设我想在当前可用宽度达到320dp时提供一个布局,并为所有其他情况提供另一种布局。这就是我想到的:

layout-w320dp/mylayout.xml
layout/mylayout.xml

但是,根据我对resource matching algorithm的理解,即使是大型设备(例如横向平板电脑)也符合w320dp - 因为,可用宽度大于320dp。

因此,来自layout-w320dp的资源将始终 - 即使对于较大的手机和平板电脑也是如此。选择layout文件夹中的默认资源的唯一时间是可用宽度小于 320dp。

那么,如何使用Android资源匹配系统表达“小于”的关系?

2 个答案:

答案 0 :(得分:6)

唉!在发布问题之后,我意识到这样做的一种方法是否定等式 - 即:

layout-w320dp/mylayout.xml --> layout for screens larger than 320dp
layout/mylayout.xml  --> layout for up to 320dp

然而,我仍然有兴趣知道是否可以实现原始的“小于”关系,因为它使意图更加清晰。

答案 1 :(得分:-1)

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

float density  = getResources().getDisplayMetrics().density;
float dpHeight = metrics.heightPixels / density;
float dpWidth  = metrics.widthPixels / density;

if(dpWidth >= 360){
    //change your resource      
}