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

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);
	}










评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值