0

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

 
hosseinb68
hosseinb68
کاربر طلایی1
تاریخ عضویت : بهمن 1389 
تعداد پست ها : 1269
محل سکونت : بوشهر

آموزش برنامه نویسی اندروید - قسمت ۴۱: ساخت اپلیکیشن ذکر شمار (بخش دوم) نحوه وارد کردن متون فارسی به
سه شنبه 1 بهمن 1392  11:19 AM


پس از ساخت یک TextView در آموزش پیش در این آموزش قصد داریم به بررسی این نکته بپردازیم که به چه نحوی می توان متون فارسی را وارد اپلیکیشن خود نماییم. برای این منظور پروژه ای که در آموزش چهلم تحت عنوان My Prayer Counter ایجاد کردیم را در محیط اکلیپس باز نموده و دو بار روی فایل main.xml را از فولدر layout کلیک کرده تا باز شود.

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:background="#fbfbdd"
  6. android:orientation="vertical" >
  7. <TextView
  8. android:id="@+id/txt_textOne"
  9. android:layout_width="wrap_content"
  10. android:layout_height="wrap_content"
  11. android:text="Large Text"
  12. android:textAppearance="?android:attr/textAppearanceLarge"
  13. android:textColor="#763f05"
  14. android:textSize="40dip" />
  15. </LinearLayout>

همانطور که در کد فوق مشاهده می کنیم، متدی تحت عنوان text وجود دارد که Value یا مقدار مرتبط با آن Large Text است. ما به سادگی قادر خواهیم بود تا این متن را به هر متن فارسی که تمایل داشته باشیم تبدیل کنیم که در این آموزش عبارت "تعداد ذکرهای من" را جایگزین می کنیم:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:background="#fbfbdd"
  6. android:orientation="vertical" >
  7. <TextView
  8. android:id="@+id/txt_textOne"
  9. android:layout_width="wrap_content"
  10. android:layout_height="wrap_content"
  11. android:text="تعداد ذکرهای من"
  12. android:textAppearance="?android:attr/textAppearanceLarge"
  13. android:textColor="#763f05"
  14. android:textSize="40dip" />
  15. </LinearLayout>

حال روی Tab مربوط به Graphical Layout کلیک کرده تا ببینیم خروجی این متن فارسی روی UI به چه شکلی است:

920809-a41-IMAGE 1.jpg

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

920809-a41-IMAGE 2.jpg

همانگونه که در تصویر فوق مشخص است دستگاه مجازی قادر به نمایش صحیح اپلیکیشن ما نمی باشد. چنانچه بخواهیم علت این مسئله را مورد بررسی قرار دهیم بایستی بگوییم از آنجا که در حین ساخت دستگاه مجازی از بخش Target نسخه Android 2.1 را انتخاب کرده ایم و این نسخه از سیستم عامل اندروید قادر به نمایش متون فارسی نیست، از اینرو اپلیکیشن ما به درستی روی دستگاه مجازی اجرا نخواهد شد. برای این منظور دو راه کار وجود دارد. راه کار اول اینکه یک دستگاه مجازی دیگر ایجاد کرده و حتماً به خاطر داشته باشیم که در تنظیمات آن در بخش Target حتماً نسخه Android 3.0 به بالا را مد نظر قرار دهیم و یا اینکه همین دستگاه مجازی را ویرایش کرده و نسخه Target آن را ارتقاء دهیم. چنانچه بخواهیم یک دستگاه مجازی را ویرایش کنیم می بایست مطابق تصویر زیر پیش رویم:

920809-a41-IMAGE 3.jpg

همانطور که مشخص است ابتدا با کلیک بر روی گزینه مد نظر آن را انتخاب نموده سپس با کلیک روی گزینه Edit به پنجره زیر دست پیدا خواهیم کرد:

920809-a41-IMAGE 4.jpg

حال در بخش Target از منویی که پیش رو داریم می توانیم نسخه Android 3.0 به بالا را انتخاب نموده و در نهایت روی دکمه Edit AVD کلیک نماییم. اکنون مجدد به پنجره قبل بازگشته و با کلیک بر روی دکمه Start می توانیم دستگاه مجازی ویرایش شده خود را اجرا نماییم. پس از اجرای دستگاه مجازی که ممکن است کمی هم تا کاملاً اجرا شود به طول انجامد مجدد روی دکمه Run کلیک می کنیم:

920809-a41-IMAGE 5.jpg

همانگونه که در تصویر فوق مشخص است، این دستگاه مجازی جدید قادر به نمایش متون فارسی هم می باشد(لازم به ذکر است که اگر این دستگاه مجازی به صورت پیش فرض به صورت افقی بود با فشردن هم زمان دکمه های Ctrl و F12 می توان آنرا به صورت عمودی در آورد و بالعکس). نکته ای که در مورد UI وجود دارد این است که این TextView در مرکز رابط گرافیکی قرار ندارد. به منظور مرکز قرار دادن کلیه عناصر روی رابط گرافیکی نیاز است تا ابتدا Layout خود را با نشانگر موس انتخاب کنیم. برای این منظور در هر جایی روی UI به جزء TextView کلیک می کنیم تا کل Layout انتخاب شود. حال به پنجره Properties رفته و مطابق تصویر زیر تغییراتی را اعمال می کنیم:

920809-a41-IMAGE 6.jpg

با کلیک کردن در بخش Value مرتبط با متد Gravity همانطور که در تصویر فوق نشان داده شده است دکمه ای ظاهر می شود که با کلیک روی آن به پنجره زیر دست پیدا خواهیم کرد:

920809-a41-IMAGE 7.jpg

در پنجره فوق کلیه مقادیری که می توان برای متد gravity در نظر گرفت نشان داده شده است و همانگونه که از نام آنها بر می آید با اعمال هر یک از آنها جایگاه کلیه عناصر قرار گرفته روی UI تغییر خواهد کرد. به طور مثال چنانچه بخواهیم کلیه عناصر در مرکز Layout قرار گیرند می بایست Value مرتبط با center را تیک بزنیم اما از آنجا که در این آموزش قصد داریم تا TextView ما در مرکز قرار گرفته اما در عین حال در بالای Layout هم قرار گیرد می بایست گزینه center-horizontal را تیک بزنیم(به عنوان فعالیت تمرینی می توان تک تک آنها را تیک زده سپس به Graphical Layout رجوع کنیم تا ببینیم که هر یک از آنها چه عملکردی دارا است). حال روی گزینه OK کلیک می کنیم و مجدد اپلیکیشن خود را اجرا می کنیم:

920809-a41-IMAGE 8.jpg

می بینیم که متن ما در وسط UI قرار گرفته است. حال نیاز داریم تا یک TextView دیگر زیر TextView قبلی ایجاد کنیم که نقش کنتور یا شمارنده را داشته باشد (به منظور جلوگیری از طولانی شدن آموزش از ذکر توضیحات پیرامون نحوه ایجاد TextView جدید خودداری می نماییم). تنها نکته ای که پیرامون این TextView جدید وجود دارد این است که اندازه متن آن را می بایست برابر با 60dip قرار دهیم که تعداد ذکرهایی که می گوییم بزرگتر به نظر آید و همچنین id اختصاص داده شده به آن را می بایست به خاطر داشت باشیم چرا که در فایل جاوای خود قرار است که به این TextView لینک دهیم. راه کاری جایگزینی که برای اختصاص یک id به عناصر روی UI وجود دارد این است که روی TextView مد نظر کلیک راست کرده سپس همانطور که در تصویر زیر مشخص است روی گزینه Edit ID کلیک نماییم:

920809-a41-IMAGE 9.jpg

پس از کلیک کردن روی گزینه Edit ID با پنجره زیر مواجه خواهیم شد:

920809-a41-IMAGE 10.jpg

حال همانند id یی که برای TextView اول اختصاص دادیم، ابتدا عبارت txt را نوشته که یک عبارت قراردادی است و اصلا الزامی نیست که آن را نوشت بلکه هر توسعه دهنده برای خود یک روش نامگذاری را انتخاب می کند. سپس یک علامت _ قرار داده و عبارت textTwo به معنی "متن دوم" را می نویسیم (لازم به ذکر است که TextView اولی که ایجاد کردیم را به هیچ وجه در کد جاوای خود لینک نخواهیم داد اما از آنجا که عادت خوبی است که برای کلیه عناصر روی رابط گرافیکی یک id در نظر بگیریم اینکار را انجام دادیم). حال روی دکمه OK کلیک کرده و این id به TextView دوم ما اختصاص خواهد یافت. در ادامه تکمیل اپلیکیشن خود نیاز به یک دکمه داریم تا با هر بار گفتن یک ذکر یک بار با انگشت خود روی آن بزنیم تا یک عدد به تعداد ذکر های گفته شده اضافه کند. برای این منظور یک دکمه روی UI خود ایجاد می کنیم (برای آشنایی بیشتر با مبحث دکمه ها به آموزش های 37 و 38 و 39 مراجعه نمایید).

920809-a41-IMAGE 11.jpg

به منظور اینکه ببینیم چه کد XML یی برای این دکمه در نظر گرفته شده است کد زیر را مد نظر قرار خواهیم داد:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:background="#fbfbdd"
  6. android:gravity="center_horizontal"
  7. android:orientation="vertical" >
  8. <TextView
  9. android:id="@+id/txt_textOne"
  10. android:layout_width="wrap_content"
  11. android:layout_height="wrap_content"
  12. android:text="تعداد ذکرهای من"
  13. android:textAppearance="?android:attr/textAppearanceLarge"
  14. android:textColor="#763f05"
  15. android:textSize="40dip" />
  16. <TextView
  17. android:id="@+id/txt_textTwo"
  18. android:layout_width="wrap_content"
  19. android:layout_height="wrap_content"
  20. android:text="0"
  21. android:textAppearance="?android:attr/textAppearanceLarge"
  22. android:textColor="#763f05"
  23. android:textSize="60dip" />
  24. <Button
  25. android:id="@+id/button1"
  26. android:layout_width="140dip"
  27. android:layout_height="wrap_content"
  28. android:background="#763f05"
  29. android:text="+"
  30. android:textColor="#fbfbdd"
  31. android:textSize="100dip" />
  32. </LinearLayout>

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

تشکرات از این پست
دسترسی سریع به انجمن ها