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

来源:互联网 发布:知柏地黄丸能治失眠吗 编辑:程序博客网 时间:2024/06/06 03:21

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










原创粉丝点击