آموزش برنامه نویسی اندروید قسمت نهم

ستاره مقاری 1395/1/14 2239

آموزش برنامه نویسی اندروید قسمت نهم

با سلام با جلسه نهم آموزش اندروید در خدمتتان هستم.

جلسه قبل ساخت نرم افزار را کمی جلو بردیم و یک سری نکات اولیه را در شروع ساخت برنامه به شما گفتم.

این جلسه میخوام راجع به ابزاراهابی که در صفحات مختلف قرار میگیرد حرف میزنیم  و صفحه های پروژه را میسازیم.

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

پس من میخواهم با کد، سایزه دکمه ام را تغییر بدهم. و با توجه به سایز گوشی. اما چطور..

خب برای کد زدن باید بریم داخل 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()
  1. خب Context که خروجی این متد هست خودش یک کلاس هست که به شما گفتم شامل یک سری اطلاعات از برنامه تان هست.

 خوده این کلاس Context درش یک متدی دارد به نام getResources

این متد خودش چیزی به نام Resource را به ما برمیگرداند

 

  1.  حالا Resource خودش یک کلاس هست دوباره. که در آن تابعی دارد به نام getDisplayMetrics. این هم که مشخص هست DisplayMetric را برمیگرداند!

 

  1. مجددا 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;

خب من این مبحث را و توابعی که پشت هم مینویسیم را برای دوستانی که برنامه نویسی جاوا کار نکردند یکم توضیح دادم. چیز پیچیده ای نیست و تقریبا بدیهی هست عملکردشان.

این کدی که الان نوشتم را میتوانید در گوشی های مختلف تست کنید. میبینید که همیشه به همین نسبت سایز دکمتان موقع اجرا تغییر میکند خیلی جاها این کد استفاده دارد وقتی بخواید دیزاینتان با توجه به صفحه گوشی تغییر کند.

برای هر چهار دکمتان این را میتوانید بنویسید حالا.

خب بریم حالا سراغ اینکه ببینیم میخواهیم صفحات برنامه مان چه ابزارهایی داشته باشند و با ابزارهایی جز Button اشنا بشویم. این بحثی بود که میشد اول کار روی آن کار کنیم چند جلسه و همه ابزارها را یکباره بگم اما فکر کنم توی طول کار هر لحظه به آنها احتیاج داشته باشیم یادتان بدم بهتر هست.

بریم یک layout بسازیم برای صفحه ای که قرار هست اطلاعات یک نفر وارد بشود

خب من همان Linear میسازم. میبینید که LinearLayout کاربرد خوبی دارد. برای وقتی بخواهید یک سری ابزار را زیر هم بندازید عالی هست.

از اول ببینیم چه چیزهایی میخواهیم. مثلا میخواهم اسم و نام فرد را داشته باشم. یعنی فرد وارد کند آن را.

اول از همه باید به کاربر بگیم میخواهیم اسمت را وارد کنی. برای نشان دادن یک متن به کاربر از TextView استفاده میکنیم.

یک تکست ویو بسازید. عرضش را بدهید fill و ارتفاعش را بدهید wrap. اینجا content wrap در اصل با توجه به سایز فونتی که انتخاب میکنید میتواند ارتفاع این textView را تنظیم کند.

خب پس تا الان دارم:


<TextView android:layout_width="fill_parent"

          android:layout_height="wrap_content"

/>

 

داخلش میخواهم بنویسم نام دوست خود را وارد کن. برای اضافه کردن متن به تکست ویو از این تگ استفاده کنید:

android:text=""

و بعد از آن متن خودتان را وارد کنید بین دوتا

فقط یک نکته بگم که اینتلیجی با فارسی مشکل دارد. شروع کنید به نوشتن بین "" میبینید فارسی بنویسید کلا کمی بهم ریخته میشود. یکم قلق دارد باید با آن کار کنید تا یاد بگیرید. همچنین توی دیزاین متن فارسی را درست نشان نمیدهد حداقل تا ورژن 14. اما در گوشیتان که اجرا بگیرید میبینید همه چی درست هست.

تا الان من این را دارم:

آموزش برنامه نویسی در اندروید

بیایم با یه سری از خواص این textView اشنا شویم.

  1. سایز فونت

برای تعیین سایز فونت میتونید از تگ زیر استفاده کنید:

android:textSize="25sp"

که واحده سایز برای فونت را باید sp بدهید. مثلا من دادم 25

  1. محل قرارگیری متن

مثلا ما فارسی نوشتیم متن باید بیاد راست. پس میتونم بزنم:

android:gravity="right"

که البته center هم کاربرد میتواند داشته باشد برای فارسی

  1. رنگ متن

برای این هم میتوانید از تگ زیر استفاده کنید

android:textColor="@android:color/white"

دقت کنید، رنگ دادن میتواند دو روش داشته باشد. یکی کدی که الان نوشتم. اما این را که بزنید میبینید برای color قدرت انتخاب بالایی ندارید. برای دادن رنگ های دلخواهتان میتونید این کار را از بخش دیزاین انجام بدهید. وارد دیزاین بشوید. از صفحه موبایل textview را انتخاب کنید و از بخش ابزارهایش از سمت راست textcolor را بزنید:

طبق عکس زیر میتوانید رنگ انتخاب کنید

آموزش برنامه نویسی در اندروید

خب حالا باید کاربر نام مخاطب یا در واقع دوستش را وارد کند! برای اینکار از EditText استفاده میکنیم. که خیلی از ویژگیهایش عین همین textview هست. من طبق زیر آن رو هم ساختم:

آموزش برنامه نویسی در اندروید

خب id که باید بهش میدادیم چون قرار هست در کد فراخوانیش کنیم ببینیم کاربر چه چیزی وارد کرده.

فقط یک چیز می ماند. Hint. البته اینجا کاربردی نداره اما خوب هست بدانید J فک کنم حدس زدید چه چیزی هست. دیدید که در برنامه ها یک جایی باید چیزی وارد کنید بعد روی محل وارد کردن مثلا نوشته نام خود را وارد کن. بعد کلیک که میکنید راهنما محو میشود؟ این همان hint هست. البته اینجا چون بالای editText نوشتیم نام را وارد کن لازم نبود

خب میتوانید برای نام خانوادگی هم عینا اینکار را کنید.

حالا میرسیم مورد بعدی. مثلا اینکه مخاطب شما زن هست یا مرد. برای اینکار میتونید به کاربر گزینه انتخابی بدهید. با استفاده از ابزاری به نام Radiobutton.

<RadioButton android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:id="@+id/rdbDokhtar"        
            android:text="زن"
        />

که البته این ابزار برای راست چین شدن یک نکته ای دارد. اول برای "مرد" هم این را بسازید.

تا الان من از خود گوشیم اسکرین گرفتم این را دارم:

آموزش برنامه نویسی در اندروید

خب این مثل فیلدهای کار با تکست ها نیست که با gravity راست چین شود.

با کد زیر اول این رادیوباتن را بیاریم سمت راست:

android:layout_gravity="right"

 

حالا ایکونش را چه کنیم؟ سمت چپ میماند!

برای این یک کلک میزنیم. ایکون خودش را برمیداریم. به جای آن از یکی از ایکونایی که خود اندروید برایمان گذاشته استفاده میکنیم و میگیم آن را بذار سمت راست ابزارم. با این کد:

android:button="@null"

android:drawableRight="@android:drawable/btn_radio"

 

آموزش برنامه نویسی در اندروید

خب حالا اخرین نکته این جلسه. بخواهم شماره تلفن را هم داشته باشم اما نمیخواهم کاربر ورودی اشتباهی بدهد.

میخواهم عدد وارد کند فقط.

برای اینکار از یک editText خاص استفاده میکنیم. همان editText را بسازید و این ویژگی را به آه بدهید:

android:inputType="number"

یا

 android:inputType="phone"

تست کنید میبینید اینجا که کاربر بیاد براش کیبوردش فقط عدد دارد.

 

فرق اولی دومی این هست که اولی فقط عدد دارد اما دومی علامت + هم دارد در کیبور (مثلا برای وارد کردن +98 و... )

و در نهایت اگر خواستید ایمیل بگیرید دیدید گاها جایی برای وارد کردن ایمیل علامت @ هم پایین کیبورد دارید؟

آن را با این صفت میشود داد:

 android:inputType="textEmailAddress"

 

خب در نهایت چیزی که دارم شکل زیر است. البته تمام نشده میخواهم نقویم فارسی و انتخاب عکس و.. هم بذارم که ایشالا جلسه بعد

 

آموزش برنامه نویسی در اندروید

آموزش برنامه نویسی در اندروید

قسمت بعدی قسمت قبلی