Persian Software Engineers – Telegram
Persian Software Engineers
1.9K subscribers
353 photos
14 videos
84 files
303 links
تجربیات شخصی یک مهندس نرم افزار در آلمان‌.
کانال یوتیوب:
https://www.youtube.com/@Dev_Germany
ادمین کانال :
@mohamad_germany
Download Telegram
خب برای کد زدن باید بریم داخل Activity و برید در OnCreate .
یکی از دکمه هایتان را فراخوانی کنید فعلا. مثلا:
Button btn = (Button) findViewById(R.id.btnAboutUs);
خب حالا باید یک سری چیزها را یاد بگیرید. اول اینکه چطوری طول و عرض دکمه را بتوانم بخوانم. کدش هست:
btn.getLayoutParams().width
btn.getLayoutParams().height
که getLayoutParams از اسمشم مشخص هست کارکردش. پارامترهای چیزی که میخواهید را میدهد و از بین آنها میتوانیم طول یا عرض را داشته باشیم.
حالا من نظرم این هست که بیایم طول و عرض را مثلا یک نسبتی از طول و عرض گوشی قرار بدهیم. من تست کردم مثلا 8/3 عدد مناسبی بود برای دیزاین ما. میتوانید تست کنید خودتان. میخوام بگم دکمه های من طول و عرضشان هردو (چون دایره هستند) برابر با 8/3 اندازه عرض گوشی باشد. خب اندازه عرض گوشی را چطور بگیریم. به این صورت:
getApplicationContext().getResources().getDisplayMetrics().widthPixels
خب حالا از اول مرور کنیم چه چیزی داشتیم. اول بگم که context در اصل برگرداننده ی یک سری اطلاعات از activity و یا application هست. در طول برنامه نویسیمان با یک سری از کاربردهایش اشنا میشویم. getApplicationContext مثلا برای این هست که ازکل اپلیکیشنتان context را برگرداند. میتوانید بعد از getApplicationContext() یک دات (.) بزنید و ببینید چه چیزهایی میتوانید بگیرید. بعد از آن هم گفتم getResources. اول یک مرور کنیم که دوتا متد پشت هم چگونه عمل میکنند.
شما وقتی میگید method1().method2() چه اتفاقی میفتد؟
با متدها که آشنایتان کردم. همچنین یادتان هست که گفتم متدها میتوانند return داشته باشند یعنی یک مقداری را برگرداند.
اما در این حالتی که گفتم الان، معمولا توی چنین حالتی method1 خروجیش یه کلاس هست که بیاید اسمش را بگذاریم method1Output. بعد از آن method2 رو داریم که قاعدتا توی کلاس method1Output وجود داره. ینی این کلاس هم متدی دارد در خودش به نام method2.
این قسمت را خوب دقت کنید چه چیزی میگم. چون ایندفعه توضیح میدهم اما درکل چنین کدهایی را زیاد خواهیم داشت.
اینجا اگه دقت کنید سه تا متد داریم پشت هم جای دوتا
getApplicationContext().getResources().getDisplayMetrics().
1)خب مشخص هست که getApplicationContext همان Context را به ما میدهد.
برای اینکه نوع خروجی متدها و یا ورودی هایشان (اگر دارد) را ببینید دکمه ctrl را نگه دارید و موس را ببرید روی اسم متدتان.
روی getApplicatioContext که اینکار را کنید چنین چیزی نوشته شده:
Public Context getApplicationContext()
2)خب Context که خروجی این متد هست خودش یک کلاس هست که به شما گفتم شامل یک سری اطلاعات از برنامه تان هست.
خوده این کلاس Context درش یک متدی دارد به نام getResources
این متد خودش چیزی به نام Resource را به ما برمیگرداند
3) حالا Resource خودش یک کلاس هست دوباره. که در آن تابعی دارد به نام getDisplayMetrics. این هم که مشخص هست DisplayMetric را برمیگرداند!
4)مجددا DisplayMetric یک کلاس هست. شامل اطلاعاتی از صفحه نمایش میشود از جمله طول و عرض. رسیدیم اخرش! اینجا میتوانید از width یا height برای گرفتن طول و عرض استفاده کنید.
اگر بخواهم توضیحاتم را با شکل بگویم به شما چنین چیزی میشود:
حالا کافی هست من این مقدار را در 3/8 ضرب کنم و برابر با طولو عرض دکمه هایم قرار بدهم.
btn.getLayoutParams().height = getApplicationContext().getResources().getDisplayMetrics().widthPixels *3/8;

btn.getLayoutParams().width = getApplicationContext().getResources().getDisplayMetrics().widthPixels *3/8;
که البته به طور خلاصه میتوانید بگید:
btn.getLayoutParams().width = btn.getLayoutParams().height =
getApplicationContext().getResources().getDisplayMetrics().widthPixels *3/8;
خب من این مبحث را و توابعی که پشت هم مینویسیم را برای دوستانی که برنامه نویسی جاوا کار نکردند یکم توضیح دادم. چیز پیچیده ای نیست و تقریبا بدیهی هست عملکردشان.
این کدی که الان نوشتم را میتوانید در گوشی های مختلف تست کنید. میبینید که همیشه به همین نسبت سایز دکمتان موقع اجرا تغییر میکند خیلی جاها این کد استفاده دارد وقتی بخواید دیزاینتان با توجه به صفحه گوشی تغییر کند.
برای هر چهار دکمتان این را میتوانید بنویسید حالا.