美文网首页Android StudioAndroid开发
Android APP修改displayMetrics

Android APP修改displayMetrics

作者: 阳春面 | 来源:发表于2017-07-29 23:47 被阅读192次

    最近在公司开发中遇到一款国产的特殊设备(屏幕分辨率为1024x600,density为1.5,densityDpi为240),按标准的话这个分辨率对应的densityDpi应该是160,所以我们按设计师标准出的切图和设置字体大小,在这个设备上都偏大了。

    我们的APP虽然只是跑在一些定制设备上的,但也不是只为这款设备开发的,不能为了这款设备强制修改切图大小和字体大小去适配它,于是我就想从修改densityDpi方式来适配它,只是以前一直以为densityDpi由系统指定的无法修改,后来尝试一下发现APP中的displayMetrics是可以修改的。

    修改很简单,通过调用Resources的updateConfiguration方法就可以了,代码如下:

     //修改屏幕density
    DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
    if(displayMetrics.widthPixels == 1024
         && displayMetrics.heightPixels == 600
         && displayMetrics.densityDpi == DisplayMetrics.DENSITY_HIGH) {
        Configuration cfg = getResources().getConfiguration();
        displayMetrics.densityDpi = DisplayMetrics.DENSITY_MEDIUM;
        cfg.densityDpi = DisplayMetrics.DENSITY_MEDIUM;
        getResources().updateConfiguration(cfg, displayMetrics);
    }
    

    通过以上代码,基本上对图片和字体都能完美适配了,但是对于代码创建的bitmap还是会有问题,bitmap创建时默认会使用系统的density, 我们需要创建的时候指定我们修改后的displayMetrics

    Bitmap bitmap = Bitmap.createBitmap(displayMetrics,width,height,config);
    

    或者在创建完成后手动调用bitmap的setDensity方法修改density

      bitmap.setDensity(DisplayMetrics.DENSITY_MEDIUM);
    

    博客原文:http://appkfz.com/2017/07/29/android-app-change-displaymetrics/

    相关文章

      网友评论

      本文标题:Android APP修改displayMetrics

      本文链接:https://www.haomeiwen.com/subject/bmthlxtx.html