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を以下の表に当てはめて、計算します。
公式サイトから引用