How can i get current device DPI values programatically in android using kotlin
Published October 07, 2022Sometimes 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
![]() |
Article Contributed By :
|
|
|
|
231 Views |