How can i get current device DPI values programatically in android using kotlin

Published October 07, 2022

Sometimes we may require to set the widget propertied like width, height, font size... programatically. To set these properties programatically will depends on device DPI values. Each device configured with different DPI values. In this example we will learn how to get device DPI values programatically.

Let get started

1. Create an Android application with android studio

2. Add below code under xml file

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".SDkVersion">

          <TextView
              android:id="@+id/txt_info"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_centerHorizontal="true"
              android:layout_marginBottom="50dp"
              android:text=""
              android:textAlignment="center"
              android:textColor="@android:color/holo_green_dark"
              android:textSize="32sp"
              android:textStyle="bold"
              app:layout_constraintBottom_toTopOf="@+id/button"
              app:layout_constraintEnd_toEndOf="parent"
              app:layout_constraintStart_toStartOf="parent" />



          <Button
              android:id="@+id/button"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="Get DPI Values"
              android:onClick="getInfo"
              app:layout_constraintBottom_toBottomOf="parent"
              app:layout_constraintEnd_toEndOf="parent"
              app:layout_constraintStart_toStartOf="parent"
              app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

 

3. To get the device dpi values we will use DisplayMetrics class which will has different properties like

densityDpi
density
scaledDensity
xdpi
ydpi

 

Add below code to get current running device density values with below code

package rrtutors.com.androidtopactivity

import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.DisplayMetrics
import android.view.View
import android.widget.TextView

class SDkVersion : AppCompatActivity() {
    lateinit var txt_info:TextView
    lateinit var displayMetrics:DisplayMetrics
    var value = 0f
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_sdk_version)
        txt_info=findViewById(R.id.txt_info)
    }

    fun getInfo(view: View) {
        displayMetrics = DisplayMetrics()
       windowManager.defaultDisplay.getMetrics(displayMetrics)
        value = resources.displayMetrics.density
        txt_info.text = "Screen Density = $value"
    }
}

 

4. Run application on your physical device or emulator and on tap on button you will see the below output

Get Device density values programatically in android with kotlin code

 

 

Article Contributed By :
https://www.rrtutors.com/site_assets/profile/assets/img/avataaars.svg

72 Views