0

我在同一活动的 layout-hdpi 和 layout-mdpi 中有两个布局。现在我在两个布局中都有一个按钮,在这个按钮上单击我必须为 hdpi 设备打开另一个活动和 mdpi 设备的另一个相关布局。

所以,我想为源文件创建不同的文件夹以支持多种屏幕尺寸就像 layout-hdpi,layout-mdpi ....

4

3 回答 3

1

我认为不同的文件夹意味着不同的包

您可以创建一个控制器类并以编程方式确定屏幕密度,您可以在其中决定调用密度(屏幕类别)特定的 java 类。

//Determine density and call the specific class as you want
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int density = metrics.densityDpi;

if (density==DisplayMetrics.DENSITY_HIGH) {
    //call package1 classes for High Density devices
}
else if (density==DisplayMetrics.DENSITY_MEDIUM) {
    //call package2 classes for Medium Density devices
}
else if (density==DisplayMetrics.DENSITY_LOW) {
    //call package3 classes for Low Density devices
}
else {
    //call package4 classes for rest
}
于 2013-10-22T12:50:08.520 回答
1

听起来您可能想使用布局本身指示的东西来确定要调用的行为。假设您在 hdpi 文件夹的布局中有一个带有 id 的视图R.id.only_in_hdpi,并且该 id 不存在于 mdpi 文件夹中。以下是您解决问题的方法:

View v = findViewById(R.id.only_in_hdpi);
if (v != null) {
    // do whatever you need to if it's hdpi
} else {
    // handle the non-hdpi case
}

重要的是要注意 xhdpi 将触发 hdpi 案例,xxhdpi 也会触发

于 2013-10-22T12:51:31.890 回答
0

这与默认情况下跟随 Android 的 MVC 模块相反。要定义控制器,您应该只为每个活动在单个 java 文件中工作。

于 2013-10-22T12:54:40.967 回答