LoginSignup
5
0

More than 3 years have passed since last update.

Androidの密度修飾子(ldpi, mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi)をコード上で判定する。

Posted at

Androidの密度修飾子はDrawableリソースの場合、それぞれのフォルダを使うことで自動的に端末のDrawableリソースが使われます。
しかし、今の手持ちの密度修飾子は何なんだ?というときがあるので、コード上で判定してみたいと思います。

MainActivity.kt

   override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val densityDpi = resources.displayMetrics.densityDpi
        (findViewById<View>(R.id.textView2) as TextView).text = densityDpi.toString()
        if (0 < densityDpi && densityDpi <= DisplayMetrics.DENSITY_LOW) {
            textview.text = "ldpi"
        } else if (densityDpi <= DisplayMetrics.DENSITY_MEDIUM) {
            // mdpi
            textview.text = "mdpi"
        } else if (densityDpi <= DisplayMetrics.DENSITY_HIGH) {
            // hdpi
            textview.text = "hdpi"
        } else if (densityDpi <= DisplayMetrics.DENSITY_XHIGH) {
            // xdpi
            textview.text = "xdpi"
        } else if (densityDpi <= DisplayMetrics.DENSITY_XXHIGH) {
            // xxdpi
            textview.text = "xxdpi"
        } else if (densityDpi <= DisplayMetrics.DENSITY_XXXHIGH) {
            // xxxdpi
            textview.text = "xxxdpi"
        }
    }

ちょっとだけ解説
densityDpiがDPI(1インチあたりのピクセル数)として取得できます。
その取得できたDPIを以下の表に当てはめて、計算します。
スクリーンショット 2020-05-30 15.38.55.png
公式サイトから引用

参考

各種のピクセル密度をサポートする

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0