Skip to content Skip to sidebar Skip to footer

Android How To Force Screen Density By Default

By magnifying the screen by 'Settings / Displays', I've found that my galaxy s9+'s screen density changes to 430 dpi to somewhere over 600dpi. This makes the layout and images to

Solution 1:

This seems to work for me.

        DisplayMetrics displayMetrics = activity.getResources().getDisplayMetrics();

        int snap = 20;
        float exactDpi = (displayMetrics.xdpi + displayMetrics.ydpi) / 2;
        float dpi = displayMetrics.densityDpi;

        if (dpi - exactDpi > snap) {

            int targetDpi = (int) (Math.ceil(exactDpi / snap) * snap);

            Configuration config = activity.getResources().getConfiguration();

            ErrorController.showMessage("adjustDisplayScale : " + config.densityDpi);

            ErrorController.showMessage("targetDpi : " + targetDpi);


            displayMetrics.densityDpi = targetDpi;
            config.densityDpi = targetDpi;
            displayMetrics.setTo(displayMetrics);
            config.setTo(config);
            activity.getResources().updateConfiguration(config, displayMetrics);
        }

Post a Comment for "Android How To Force Screen Density By Default"