2013-10-22 32 views
0

我有两个layout-hdpi & layout-mdpi的相同活动。 现在我有一个按钮,在这两个布局中,点击此按钮,我必须打开另一个活动,为hdpi设备& mdpi设备的另一个相对布局。根据屏幕大小区分源文件(.java)?

所以, 我要做出不同的文件夹中的源文件,以支持多个屏幕尺寸就像布局,华电国际,布局MDPI ....

+0

我相信你无法做到这一点。您需要使用swtch case来识别密度dpi,然后进行相应的编码。 –

+1

为什么,你想达到什么目的? – npace

+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 
} 
+0

我应该如何实现这个切换不同的活动。 –

+0

同样的方法也可以应用于活动..唯一的是你的主要活动将是一个..这将是一个发射器活动和控制器以及.. – bakriOnFire

1

这听起来像你可能想表明使用的东西d由布局本身来确定要启用哪个行为。假设您在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将火华电国际的情况下,这将xxhdpi

0

这是违背MVC模块,默认情况下,随后的Android。为了定义一个控制器,你应该只在单个java文件中为每个活动工作。