我在layout-hdpi&中有两个布局。 layout-mdpi相同的活动。 现在我有一个按钮,在这两个布局中,在这个按钮上点击我必须打开hdpi设备的另一个活动& mdpi设备的另一种相对布局。
所以, 我想为源文件制作不同的文件夹以支持多种屏幕大小就像layout-hdpi,layout-mdpi ....
答案 0 :(得分: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
}
答案 1 :(得分:1)
听起来您可能想要使用布局本身指示的内容来确定要调用的行为。假设您在hdpi文件夹的布局中有一个标识为R.id.only_in_hdpi
的视图,并且该标识不存在于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
也是如此答案 2 :(得分:0)
这是针对MVC模块的,默认情况下是Android。对于定义控制器,您应该只在每个活动的单个java文件中工作。