How can i get current device DPI values programatically in android using kotlin
Get device DPI density values programmatically in android
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
![]() |
