DensityUtils.kt 1.84 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
package com.miya.fastcashier.utils

import android.app.Application
import android.content.ComponentCallbacks
import android.content.Context
import android.content.res.Configuration

class DensityUtils {

    companion object {
        var sNonCompatDensity: Float = 0f
        var sNonCompatScaledDensity: Float = 0f

        fun setDensity(context: Context, application: Application) {
            val appDisplayMetrics = application.resources.displayMetrics
            if (sNonCompatDensity == 0f) {
                sNonCompatDensity = appDisplayMetrics.density
                sNonCompatScaledDensity = appDisplayMetrics.scaledDensity
                application.registerComponentCallbacks(object : ComponentCallbacks {
                    override fun onConfigurationChanged(newConfig: Configuration) {
                        if (newConfig != null && newConfig.fontScale > 0) {
                            sNonCompatScaledDensity =
                                application.resources.displayMetrics.scaledDensity
                        }
                    }

                    override fun onLowMemory() {
                    }
                })
            }
            val targetDensity = (appDisplayMetrics.widthPixels / 720).toFloat()
            val targetScaledDensity = targetDensity * (sNonCompatScaledDensity / sNonCompatDensity)
            val targetDensityDpi = (160 * targetDensity).toInt()
            appDisplayMetrics.density = targetDensity
            appDisplayMetrics.scaledDensity = targetScaledDensity
            appDisplayMetrics.densityDpi = targetDensityDpi

            val activityDisplayMetrics = context.resources.displayMetrics
            activityDisplayMetrics.density = targetDensity
            activityDisplayMetrics.scaledDensity = targetScaledDensity
            activityDisplayMetrics.densityDpi = targetDensityDpi
        }

    }

}