بدست آوردن اندازه صفحه نمایش دستگاه اندرویدی

خانه » آموزش‌های تکمیلی » بدست آوردن اندازه صفحه نمایش دستگاه اندرویدی
بدست آوردن اندازه صفحه نمایش دستگاه اندرویدی
در این جلسه از سری مباحث آموزش برنامه نویسی اندروید قصد داریم نحوه بدست آوردن اندازه صفحه نمایش یک دستگاه اندرویدی را بررسی کنیم. برای این کار از دوس کلاس Display و DisplayMetrics استفاده خواهیم کرد.
بدست آوردن اندازه صفحه نمایش در اندروید به نام خدا. در برخی موارد ممکن است توسعه دهنده و برنامه نویس اندروید، نیازمند دانستن اندازه (طول و عرض) صفحه نمایش دستگاه‌های اندرویدی بر حسب پیکسل (pixel) باشد تا بر اساس آن بتواند عمل مناسبی انجام دهد. همچنین می‌توان تراکم پیکسلی صفحه نمایش یا همان DPI (مخفف Dots per inch) به معنی تعداد نقطه در اینچ را نیز بدست آورد.
برای اینکار مطابق مبحث آموزش ساخت پروژه در اندروید استودیو یک پروژه اندرویدی با نام ScreenSize می‌سازم. اکتیویتی را از نوع Empty Activity و زبان را Java انتخاب کردم. در این تمرین از دو کلاس Display و DisplayMetrics برای بدست آوردن اندازه صفحه نمایش استفاده می‌کنم که از کلاس دوم علاوه بر سایر ..

خانه » آموزش‌های تکمیلی » بدست آوردن اندازه صفحه نمایش دستگاه اندرویدی

بدست آوردن اندازه صفحه نمایش دستگاه اندرویدی

بدست آوردن اندازه صفحه نمایش در برنامه نویسی اندروید
در این جلسه از سری مباحث آموزش برنامه نویسی اندروید قصد داریم نحوه بدست آوردن اندازه صفحه نمایش یک دستگاه اندرویدی را بررسی کنیم. برای این کار از دوس کلاس Display و DisplayMetrics استفاده خواهیم کرد.

بدست آوردن اندازه صفحه نمایش در اندروید

به نام خدا. در برخی موارد ممکن است توسعه دهنده و برنامه نویس اندروید، نیازمند دانستن اندازه (طول و عرض) صفحه نمایش دستگاه‌های اندرویدی بر حسب پیکسل (pixel) باشد تا بر اساس آن بتواند عمل مناسبی انجام دهد. همچنین می‌توان تراکم پیکسلی صفحه نمایش یا همان DPI (مخفف Dots per inch) به معنی تعداد نقطه در اینچ را نیز بدست آورد.
برای اینکار مطابق مبحث آموزش ساخت پروژه در اندروید استودیو یک پروژه اندرویدی با نام ScreenSize می‌سازم. اکتیویتی را از نوع Empty Activity و زبان را Java انتخاب کردم. در این تمرین از دو کلاس Display و DisplayMetrics برای بدست آوردن اندازه صفحه نمایش استفاده می‌کنم که از کلاس دوم علاوه بر سایر صفحه نمایش، DPI صفحه هم بدست می‌آید.
قبل از کار با کلاس‌ها، دو TextView در layout اکتیویتی تعریف می‌کنم:

activity_main.xml

  <?xml version="1.0" encoding="utf-8"?>  <RelativeLayout 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"      android:gravity="center"      tools:context=".MainActivity">        <TextView          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:id="@+id/display"          android:text="" />        <TextView          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:id="@+id/display_metrics"          android:text=""          android:layout_below="@id/display" />    </RelativeLayout>  

بدست آوردن اندازه صفحه نمایش توسط کلاس Display

ابتدا یک نمونه از کلاس Display به صورت زیر می‌سازم:

  Display displaySize = getWindowManager().getDefaultDisplay();  

با تعریف کد فوق، اطلاعات مربوط به صفحه نمایش دستگاه اندرویدی از جمله نام صفحه و اندازه آن در displaySize ذخیره می‌شود. سپس یک نمونه از کلاس Point می‌سازم تا مختصات طول و عرض صفحه نمایش را از displaySize دریافت و ذخیره کند:

  Point size = new Point();  displaySize.getSize(size);  

توسط getSize() مختصات در size ذخیره شده است. در نهایت، طول و عرض دریافتی را به دو مقدار از جنس int تبدیل می‌کنم:

  int displayWidth = size.x;  int displayHeight = size.y;  

در دو خط بالا، size.x اندازه عرض و size.y اندازه ارتفاع یا طول را برمی‌گرداند که در دو int ذخیره شده است.
حالا مختصات را در TextView اولی نمایش می‌دهم. کد کامل اکتیویتی:

MainActivity.java

  package ir.android_studio.screensize;    import androidx.appcompat.app.AppCompatActivity;    import android.graphics.Point;  import android.os.Bundle;  import android.view.Display;  import android.widget.TextView;    public class MainActivity extends AppCompatActivity {        TextView txtDisplay, txtDisplayMetrics;        @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.activity_main);            txtDisplay = findViewById(R.id.display);          txtDisplayMetrics = findViewById(R.id.display_metrics);            Display displaySize = getWindowManager().getDefaultDisplay();          Point size = new Point();          displaySize.getSize(size);          int displayWidth = size.x;          int displayHeight = size.y;            txtDisplay.setText("Width: " + displayWidth + " / " + "Height: " + displayHeight);        }  }  

پروژه را اجرا می‌کنم:

بدست آوردن اندازه صفحه نمایش دستگاه اندرویدی توسط کلاس Display

مشاهده می‌کنید اعداد ۱۰۸۰ و ۲۰۳۴ به ترتیب عرض و ارتفاع صفحه نمایش این دستگاه، یعنی دیوایس مجازی شبیه ساز اندرویدی Genymotion را نشان می‌دهند.

بدست آوردن اندازه صفحه نمایش توسط کلاس DisplayMetrics

کدهای زیر را به اکتیویتی اضافه می‌کنم:

  DisplayMetrics metricSize = new DisplayMetrics();  getWindowManager().getDefaultDisplay().getMetrics(metricSize);  int metricDisplayWidth = metricSize.widthPixels;  int metricDisplayHeight = metricSize.heightPixels;  int metricDPI = metricSize.densityDpi;  float xdp = metricSize.xdpi;  float ydp = metricSize.ydpi;  txtDisplayMetrics.setText("Width: " + metricDisplayWidth + " / " + "Height: " + metricDisplayHeight + " DPI: " + metricDPI + " X:" + xdp + " Y:" + ydp);  

در این قسمت و با استفاده از کلاس DisplayMetrics مانند قسمت قبل ابتدا اندازه صفحه نمایش بر حسب پیکسل گرفته شده است. metricSize.widthPixels مقدار عرض و metricSize.heightPixels مقدار ارتفاع را برمی‌گرداند. همچنین metricSize.densityDpi مقدار DPI صفحه را برمی‌گرداند. علاوه بر آن، مختصات طول و عرض DPI هم توسط metricSize.xdpi و metricSize.ydpi گرفته شده است.
مجدد پروژه را اجرا می‌کنم:

بدست آوردن اندازه صفحه نمایش و DPI دستگاه اندرویدی توسط کلاس DisplayMetrics

در تصویر فوق ملاحظه می‌کنید طول و عرض صفحه نمایش مانند خروجی کلاس قبل بوده و علاوه بر آن، DPI صفحه و مختصات X و Y آن نیز عدد ۴۲۰ را نشان می‌دهد.
کد کامل اکتیویتی:

MainActivity.java

  package ir.android_studio.screensize;    import androidx.appcompat.app.AppCompatActivity;    import android.graphics.Point;  import android.os.Bundle;  import android.util.DisplayMetrics;  import android.view.Display;  import android.widget.TextView;    public class MainActivity extends AppCompatActivity {        TextView txtDisplay, txtDisplayMetrics;        @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.activity_main);            txtDisplay = findViewById(R.id.display);          txtDisplayMetrics = findViewById(R.id.display_metrics);            Display displaySize = getWindowManager().getDefaultDisplay();          Point size = new Point();          displaySize.getSize(size);          int displayWidth = size.x;          int displayHeight = size.y;            txtDisplay.setText("Width: " + displayWidth + " / " + "Height: " + displayHeight);            DisplayMetrics metricSize = new DisplayMetrics();          getWindowManager().getDefaultDisplay().getMetrics(metricSize);          int metricDisplayWidth = metricSize.widthPixels;          int metricDisplayHeight = metricSize.heightPixels;          int metricDPI = metricSize.densityDpi;          float xdp = metricSize.xdpi;          float ydp = metricSize.ydpi;            txtDisplayMetrics.setText("Width: " + metricDisplayWidth + " / " + "Height: " + metricDisplayHeight + " DPI: " + metricDPI + " X:" + xdp + " Y:" + ydp);        }  }  

مطالعه‌ی بیشتر:

https://developer.android.com/reference/android/view/Display
https://developer.android.com/reference/android/graphics/Point
https://developer.android.com/reference/android/util/DisplayMetrics

توجه : سورس پروژه درون پوشه Exercises قرار دارد

دانلود نسخه PDF این آموزش به همراه سورس پروژه
تعداد صفحات : ۷
حجم : ۱ مگابایت
قیمت : رایگان
دانلود رایگان با حجم ۱ مگابایت لینک کمکی این مطلب چقدر برایتان مفید بود؟ لطفا امتیاز دهید 5 / 5 ( 1 امتیاز ) آموزش‌های تکمیلی, آموزش‌های رایگان

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دشمن ساروج سوربات پتاسیم استئارات منیزیم بنزوات سدیم منتول وانیل مونوسدیم گلوتامات صمغ عربی استئاریک اسید پودر تالک پرلیت خاک رنگبر روغن آرگان روغن جوجوبا تیو سولفات سدیم کراتین کتراک اسید تانیک پکتین کاراگینان پودر کاکائو بوراکس آلانتوئین صمغ عربی برای اپیلاسیون آمونیاک خانگی پروتئین وی پگاه کربومر ساختار فروکتوز

کتراک

صمغ عربی

مونو سدیم گلوتامات

اسید استیک

کربومر

کافور

خاک دیاتومه

کربن فعال

سیلیکون دی اکساید

آویسل

آنتی اکسیدان TBHQ

گلوتن ذرت

لانولین

روغن کندش

کافور

گلوتن

روغن فندوق

لاکتات کلسیم

منیزیم استئارات

روغن آووکادو

روغن درخت چای

روغن براهمی

روغن نارگیل

کتراک

سوربات پتاسیم

روغن بادام

شی باتر

ایزوتیازولین

روغن خراطین

روغن جوجوبا

مالتودکسترین

روغن آرگان

فوماریک اسید

خاک دیاتومه