您的位置:首页 > 移动开发 > Android开发

【笔记】Android应用自适应设备分辨率

2012-04-19 14:34 441 查看
Android设备种类太过繁杂,分辨率有大不相同;所以在做应用的时候很麻烦,之前都是为不同分辨率的设备做不同的版本,这样就造成了很难维护;

现在解决这个问题的主要思想是:获取设备的分辨率,根据不同的分辨率设备来动态加载布局文件和图片资源;

现在的解决方法是:

1、通过以下代码来获取设备的分辨率,写到配置文件内

/**
* 自动识别机器分辨率,写配置文件
*/
public void getDisplayPixels(){
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
switch(dm.widthPixels){
case 1024:
if(dm.heightPixels == 768){
cfg.setConfig("displayPixels", "0");
}
break;
case 1280:
if(dm.heightPixels == 800){
cfg.setConfig("displayPixels", "1");
}
break;
default:
cfg.setConfig("displayPixels", "-1");
}
}


2、些不同的视图文件(布局文件XML),来适应不同的分辨率设备(支持主流设备分辨率即可),如下图所示:



3、通过配置文件内的参数来读取布局文件,如下两段代码片段:

cfg = new ConfigUtils(this, "config");
if(cfg.getConfig("displayPixels", "").equals("0")){
setContentView(R.layout.dishes_details_1024_768);
}else{
setContentView(R.layout.dishes_details_1280_800);
}


LayoutInflater factory = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = null;
if(cfg.getConfig("displayPixels", "").equals("0")){
v = (View)factory.inflate(R.layout.dishes_details_content_1024_768, null);
}else{
v = (View)factory.inflate(R.layout.dishes_details_content_1280_800, null);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐