بررسی فایل ها و فولدرهای پروژه ی اندرویدی

چاپ

اجازه دهید تا به فایل ها و فولدرهای پروژه ی اندرویدی خود نگاهی بیاندازیم. بنابراین پروژه ی Hello Android را باز کنید تا به بررسی آن بپردازیم. اندروید  بسیار ایراد گیر است و برای وارد شدن به فولدرها به تمام منابع (مثل کدها و عکس ها و صوت ها) نیاز دارد، در غیر این صورت به درستی کامپایل و اجرا نمی شود. 

 اندروید استودیو با کمک گرفتن از Gradle مسیر منابع را در پروژه ی ما نگهداری می کند و هنگامی که ما بخوهیم از چیزی استفاده کنیم که وجود ندارد، ما را آگاه می کند.بعنوان مثال اگر نام یک عکس یا یک صوت را اشتباه وارد کنیم  ما را مطلع می کند. تقریبا هنگامی که یک منبع را به پروژه ی خود اضافه کنیم، اندروید استودیو فوراً آن را شناسایی می کند و  در دسترس ما قرار می دهد. 

 اگر شما تمام فولدرها را در پنجره ی جستجوی project باز کنید، مشاهده خواهید کرد که تعداد زیادی فایل و فولدر در داخل هر پروژه وجود دارند. ممکن است این همه فایل و فولدر، برای شما کمی ترسناک به نظر برسد، اما باید به شما بگوییم که نیازی به بررسی و ویرایش اکثر این فایل ها و فولدرها نداریم. و اکثر آنها توسط خود اندروید استودیو مدیریت می شوند. در اینجا، ما تنها فایل ها و فودرهای کلیدی را مورد تجزیه و تحلیل قرار خواهیم داد. 

در پروژه ی خود، فولدرهای نشان داده شده در عکس زیر  را با کلیک بر روی علامت مثلثی شکل، باز کنید(گسترش دهید). این عکس، پوشه هایی که در اکثر اوقات به آنها نیاز داریم را نشان می دهد. من(نویسنده) بخش های اصلی و کاربردی را علامت گذاری کرده ام. و می توانیم در ادامه به آنها اشاره کنیم. 

 ما تقریبا می توانیم هر فایل و فولدری که نیاز داریم را در پوشه ی src/main/ پیدا کنیم. این پوشه(ها) با عدد 1 مشخص شده اند. توجه کنید که فولدر java که با عدد 2 مشخص شده است، حاوی یک ساب فولدر است که نامی مشابه با نام پکیج این پروژه دارد(یعنی: com.gamecodeschool.helloandroid ) و در داخل آن، فایل MyActivity.java که با شماره ی 3 مشخص شده است، وجود دارد. همان طور که مشاهده می کنید، اندروید استودیو پسوند های java. را نشان نمی دهد، این کار به منظور ساده سازی می باشد. اگر شما دو یا چند پکیج مختلف را در یک پروژه ایجاد کنید، ساب فولدرهایی با همین نام پکیج ها، در پوشه ی java ظاهر خواهند شد. 

 اصلی ترین چیزهایی که به طور مداوم آنها را به پروژه های اندرویدی اضافه می کنیم و یا مورد ویرایش قرار می دهیم، منابع اندروید هستند. تمامی منابع اندروید در داخل یک فولدر به نام res قرار دارند، که در تصویر بالا با شماره 4 نشان داده شده است. همان طور که در فصل 1 آموختیم، پروژه ی ما می تواند حاوی منابع بسیار متفاوتی باشد. اجازه دهید بعنوان یک مثال، این موضوع را به شما نشان دهیم.

 مثلا، پوشه ای به نام drawable که در تصویر بالا با شماره ی 5 نشان داده شده است، حاوی تمام فایل های گرافیکی است. اگر ما یک دکمه یا پس زمینه یا آیکن زیبا طراحی کنیم، در این مکان نگهداری می شود. علاوه بر آن، ما قادر هستیم تا در داخل فولدر res، ساب فولدرهایی را ایجاد کنیم که حاوی نسخه های مقیاس بندی شده از گرافیک ها باشند. این ساب فولدرها و گرافیک های مقیاس دهی شده ی آنها توسط دستگاه ها با صفحه ی نمایش متفاوت، مورد استفاده قرار می گیرند. و نام هایی مثل drawable-hdpi و drawable-mdpi و drawable-xhdpi و drawable-xxhdpi دارند. 

 نام این فولدرها بر اساس اندازه ی  صفحه ی نمایش دستگاه مشخص شده است. مثلا اگر به نام های بالا دقت کنید، حرف h به معنی بزرگ و حرف m به معنی متوسط و حرف xh به معنی بسیار بزرگ و حرف xxh به معنی بسیار بسیار بزرگ است. البته این نام گذاری اختیاری است، زیرا اندروید در صورت ارائه نشدن نوع صفحه ی نمایش، گرافیک ها را خودش مقیاس دهی می کند. اما این کار باعث می شود تا کیفیت نمایش دادن گرافیک ها کاهش یابد، زیرا ممکن است عکس ها کشیده شوند. 

 در داخل پوشه ی layout، می تونیم فایل my_layout.xml را مشاهده کنیم که در عکس بالا، با شماره ی 6 نشان داده شده است. این امکان وجود دارد تا در پروژه ی خود بیش از یک لی اوت(layout ) داشته باشیم. و هنگامی که آنها را ایجاد کنیم، همگی در داخل این پوشه قرار می گیرند. بعنوان مثال این امکان وجود دارد که ما یک پروژه داشته باشیم که دارای سه لی اوت به نام های home_layout.xml و settings_layout.xml و main_layout.xml باشد. علاوه بر آن، درست مانند پوشه ی drawable ما می توانیم ساب فولدرهایی در داخل پوشه ی res داشته باشیم که حاوی لی اوت های متفاوتی برای دستگاه های مختلف باشند. نام این پوشه ها قابل حدس زدن است، و به صورت  layout-hdpi و layout-mdpi و ... می باشند. 

 شما همچنین می توانید پوشه هایی را اضافه کنید که از جهت های مختلف دستگاه پشتیبانی کنند، مانند  layout-landscape و layout-portait . 

 


حالا در ساختار پوشه های خود، به پوشه ی علامت گذاری شده با عدد 7 می رسیم. نام این پوشه ی values است که حاوی فایلی به نام strings.xml است. توجه کنید که نام اپلیکیشن ما همه جا، در کدهای جاوا تکرار نشده است. بلکه تنها در داخل این فایل یعنی  strings.xml قرار گرفته است. زیرا بهتر است منابع رشته ای را در داخل این فایل قرار دهیم. 

 با استفاده از منابع رشته ای، می توانیم مشکل ترجمه ی یک اپلیکیشن به دیگر زبان ها را به سادگی حل کنیم. به فایل strings.xml که در داخل پوشه ی values قرار دارد نگاه کنید و روی آن دابل-کلیک کنید. در زیر، کدهای آن را مشاهده می کنید. در کدهای زیر، من یک خط را به رنگ قرمز درآورده ام، به آن توجه کنید:

مثال (بررسی فایل ها و فولدرهای پروژه ی اندرویدی)

<resources>
<string name="app_name">Hello Android</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
</resources>

 حالا به عکس زیر توجه کنید که یک خط کد را در فایل layout.xml از پروژه ی Hello Android  نشان می دهد. 

 

 در عکس بالا، در خط اول،  عبارت !Hello world را مستقیما به text  داده ایم. با نوشتن "!text="Hello world  برنامه می تواند آن را بخواند اما یک پنجره ی پاپ آپ به ما نشان داده می شود و می گوید که این عبارت که در داخل تگ TextView مشخص کرده اید، می تواند با استفاده از عبارت  string/hello_world@ به یک رشته در داخل فایل strings.xml که نامش hello_world است اشاره کند. 

به عبارت ساده تر، فرض کنید ما در داخل فایل strings.xml یک رشته تعریف کرده باشیم و نام آن، یعنی مقدار name را hello_world گذاشته باشیم، در این صورت برای اینکه بتوانیم به مقدار این رشته، در داخل فایل لی اوت خود دسترسی داشته باشیم، می توانیم از دستور /string@ استفاده کنیم و در جلوی آن از نام مورد نظر استفاده کنیم. بنابراین با این روش می توانیم بارها از یک متن در داخل اپلیکیشن خود استفاده کنیم و یا آن را ترجمه کنیم.