رفتن به مطلب
Salar82

آموزش کامل کار با B4XPages *بسیار کاربردی و مهم*

پست های پیشنهاد شده

Salar82    501

بسم الله الرحمن الرحیم

سلام و درود خدمت همه‌ی اعضای انجمن انسرسنتر

B4X چن وقتی هست از یه سری کتابخونه ها رونمایی کرده؛ مثل B4XTurtle و B4XPages و .... که فوق العاده کاربردی هستن.

همونطور که قولش رو داده بودم، قرار شد یه دوره کامل و رایگان آموزش کار با این کتابخونه های جامع و کامل رو قرار بدم. که انشاءالله با B4XPages که خیلی مورد استقبال برنامه نویسان قرارگرفته دوره ها رو شروع می‌کنم.

منتها قبل از شروع آموزش، یه سری نکات هست که باید خدمت همگی عرض کنم:

 

1- برای اینکه آموزشها پراکنده نشن، لطفا تو این پست، چیزی نفرستین و اگر موردی، سوالی و یا مشکلی بود، یه پست جدید ایجاد کنید.

2- آموزشها تا اطلاع ثانویه بصورت چند روز یکبار قرار داده میشن (بدلیل کمبود وقت بنده) اما هر زمان که وقت اضاف آوردم، حتما سعی میکنم جلسه بعد رو آماده کنم و بفرستم. (چون خودم هم باید مطالعه در این مورد داشته باشم :))

3- آموزش های مقدماتی همینجا قرار داده میشن و دیگر سورس ها و آموزش های مربوطه، تو یه پست جدید میذارم تا مشکلات مربوط به اونا، همونجا مطرح بشن.

4- البته لینک آموزشهای دیگه هم، اینجا قرار داده میشه. پس تمامی آموزشهای مربوط به B4XPages، همینجا در دسترس هستن.

5- آموزشها، کاملا مطابق با سایت مرجع پیش میره. پس نگران ناقص بودن دوره نباشید :) 

6- مهم ترین نکته‌ای که مد نظر بنده هست و بهمین خاطر آموزش رو رایگان گذاشتم، اینه:

هزینه هر آموزش، یه صلوات برای سلامتی و ظهور امام عصر (عج) هست ....

 

ان شاءالله تا چن روز آینده، دوره آموزشی رو شروع می‌کنیم.

امیدوارم در تمام مراحل زندگی موفق باشید.

:53::53::53::53:

  • پسندیدن 8

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
Salar82    501

جلسه اول

در در 24 مهر 1399 در 20:37، Salar82 گفته است :

هزینه هر آموزش، یه صلوات برای سلامتی و ظهور امام عصر (عج) هست ....

خدا رو شکر جلسه اول آماده شد.

امیدوارم کامل و مفید باشه.

 

اول از همه، بهتره یه مقدمه از B4XPages بگم تا بفهمیم اصلا چی هست و بدرد چی میخوره و چه مزیت هایی داره.

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

مهمترین فایده‌ی B4XPages، اینه که دیگه لازم نیست با رویدادها و چرخه حیات یک اکتیویتی (مثل Activity_Create , Activity_Resume , Activity_Resume , Activity_KeyPress و ....) سر و کله بزنیم؛ صفحات هیچ وقت از بین نمیرن و براحتی از هر کجا میشه به صفحات دیگه دسترسی داشت (که ان‌شاءالله در جلسات بعد، کامل بررسی میکنیم)

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

فایده دیگه ای که داره، اینه که با یه کد، میتونید همزمان برای اندروید و ios برنامه بنویسین. (البته نه دقیقا، یه سری تفاوتها هست که ان‌شاءالله در آینده در این مورد بحث خواهیم کرد)

 

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

1- هیچ کسی مجبور نیست از این روش برای نوشتن برنامش استفاده کنه.

2- هنوز یه سری محدودیت ها داره که ان‌شاءالله رفع میشه. یکی از مهمترین محدودیتهاش اینه که انیمیشن بین صفحات، فقط در یک جهت حرکت میکنن و قابل تغییر هم نیستن.

3- برای استفاده از B4XPages، باید از نسخه 10 به بعد بیسیک استفاده کنید.

اینم یه پیشنمایش از B4XPages:

nVw98yQ97c.gif

 

سعی کردم حجم آموزش رو کمتر و در عوض، آموزشها رو پیوسته‌تر کنم.

ان‌شاءالله در جلسه بعد، بیشتر بررسی می‌کنیم که B4XPages، دقیقا چه مشکلاتی رو برای برنامه نویس رفع میکنه.

 

اگر نقدی، مشکلی و یا ایرادی از بنده هست، تو خصوصی میتونید پیام بدید. حتما استقبال میکنم. :) 

:53::53::53::53:

  • پسندیدن 8

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
Salar82    501

جلسه دوم

در 18 ساعت قبل، Salar82 گفته است :

هزینه هر آموزش، یه صلوات برای سلامتی و ظهور امام عصر (عج) هست ....

B4XPages، چه مشکلاتی را برای ما رفع می‌کند؟

 

در ادامه جلسه قبل، تو این جلسه میخوایم بیشتر خصوصیات B4XPages رو بررسی کنیم.

B4XPages که از نسخه 10 به بعد بیسیک وارد دنیای B4X شد، خیلی چیزها رو برای ما ساده میکنه.

توسعه دهندگان اندروید، با پیچ و خم های اون، کاملا آشنا هستن و میدونن که یه برنامه نویس اندروید، با چه چالش هایی روبرو هست. بخاطر همین، شاید درک سادگی B4XPages برای بعضی‌ها مشکل باشه. :) 

همونطور که در جلسه اول گفتم، B4XPages چند هدف داره:

  •  Cross Platform Layer (قبلا هم اشاره شد. با یه کد و یه کلاس، میتونید علاوه بر اندروید، برای ios و حتی B4J هم برنامه بنویسین)
  • توسعه برنامه‌های اندرویدی رو بسیار ساده تر میکنه.

از مزایای CrossPlatformLayer، این هست که B4XPages میاد اکثر تفاوتهای اکتیویتی‌های B4A، صفحات B4i و فرم های B4J رو پنهان میکنه و این یه نقطه قوت برای این کلاس هست. به همین دلیل خییلی از برنامه نویسان بیسیک، به سمت B4XPages حرکت کردن و تا الان استقبال خیلی خوبی از B4XPages شده.

حتی اگر شما فقط به توسعه برنامه اندرویدی علاقه داشته باشید، باز میتونید از B4XPages استفاده کنید.

سه نکته مهم درمورد کلاسهای B4XPages:

  1. این کلاس‌ها بر خلاف اکتیویتی‌ها، چرخه حیات ندارن (مثلا مثل اکتیویتی ها نیستن که اول Activity_Create فراخوانی بشه و بعد Activity_Resume و مثلا موقع خارج شدن، Activtiy_Paused اجرا بشه.)
  2. B4XPages کاملا منظم هست و هیچ وقت از بین نمیره که مثلا بخواد OnPaused داشته باشه و همین کار رو برای شما بسیار ساده تر میکنه.(اگر بطور مثال بخوام بگم، فرض کنید شما از داخل یه اکتیویتی دیگه، مثلا بتونید Title یه اکتیویتی دیگه رو تغییر بدید. چنین قابلیت‌هایی در B4XPages، فوق العاده کاربردی هستن.)
  3. متغیرها و ویوهای یک پیج، هرگز Reset و بازنشانی نمیشن و این بسیار مهمه.

 

در B4XPages، بجای هر اکتیویتی، یک پیج داریم.

 

  • سه نکته بالا، خیلی از کارها رو ساده میکنن. برای مثال، یه لیستی از اون‌ها رو آوردم:
  1. رویدادها، هرگز از بین نمیرن و یا در صف قرار نمیگیرن
  2. حالت خواب، هرگز صدا زده نمیشه و بعنوان مثال، دیگه لازم نیست انیمیشن ها رو تو Activity_Resume مجددا restart کرد.
  3. در بیشتر موارد، دیگه نیازی از سرویس Starter نیست
  4. UI برنامه، هرگز از بین نمیره
  5. با استفاده از B4XPages، بطور مستقیم میشه ساب های مختلف در دیگر پیج ها رو فراخوانی کرد و دیگه نیاز به استفاده از CallSub و یا CallSubDelayed نیست.
  6. بطور مستقیم میتونیم به متغیرهای دیگر پیج ها دسترسی داشته باشیم.
  7. بطور مستقیم میشه به ویوهای دیگر پیج ها، دسترسی داشت و اونا رو دستکاری کرد.
  8. میشه یه ویو رو با تمام خصوصیاتش، بین پیج های B4XPages، جابجا کرد.(همونطور که در تصویر جلسه قبل هم مشخص بود)
  9. میتونید در یک پیج، پیج های دیگری اضافه کنید. (با کد)
  10. خیلی جاها، دیگه لازم نیست FirstTime = True رو چک کرد
  11. مدیریت دکمه بک گوشی، بسیار ساده تر است.

 

اگر سورس چت بلوتوثی با اکتیویتی ها و B4XPages رو با هم مقایسه کنید، کاملا این سادگی رو متوجه میشید:

 

سورس چت بلوتوثی قدیمی (با استفاده از اکتیویتی ها)

Bluetooth.zip

 

سورس چت بلوتوثی جدید (با B4XPages)

خودتون این دو سورس رو مقایسه کنید. تا سادگی کار و کدها رو حس کنید.

 

با این وجود، هیچ کسی مجبور نیست که از B4XPages استفاده کنه. در جلسه قبل هم گفته شد، B4XPages هنوز دارای یسری محدودیت ها هست.

از جلسه بعد وارد کد نویسی و ایجاد این کلاس میشیم.

 

موفق باشید

اگر نقدی، مشکلی و یا ایرادی از بنده هست، تو خصوصی میتونید پیام بدید. حتما استقبال میکنم. :) 

:53::53::53::53:

  • پسندیدن 7

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
Salar82    501

جلسه سوم

در در 27 مهر 1399 در 11:19، Salar82 گفته است :

هزینه هر آموزش، یه صلوات برای سلامتی و ظهور امام عصر (عج) هست ....

 

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

  • شما میتونید به تمااامی مقادیر، متغیرها، ویوها، انیمیشن‌ها و ... دسترسی 100 درصدی داشته باشین. یعنی که بعنوان مثال، براحتی قادرید متن فلان Button در فلان پیج رو از دیگر پیج ها حتی اگر یه پیج دیگه نمایان باشه، بگیرید، تغییر دهید و یا حتی خود اون Button رو به یه پیج دیگه منتقل کنید. (این نکته رو حتما میدونید که یکی از معضلات بزرگ کار با اکتیویتی‌ها، جابجایی اطلاعات متغیرها بین اونهاست اما B4XPages، این مشکل رو براحتی حل کرده)

 

خب شروع کنیم:

از نسخه 10 به بعد بیسیک، IDE بدون اکتیویتی ها باز میشه. برای ایجاد یه پروژه B4XPages، در مسیر زیر، پروژه رو ایجاد میکنیم.

Files -> New Project ->B4XPages

 

بطور پیشفرض، با ایجاد یک پروژه B4XPages، همزمان سه پروژه با B4J،B4A و B4i + یک پوشه به اسم SharedFiles و کلاس B4XMainPage ایجاد میشه که این کلاس بین هر سه پروژه مشترک هست.

اگر قصد دارید فقط با یک پلتفرم کار کنید، کافیه سه پوشه دیگه رو حذف و کلاس B4XMainPagev رو به پوشه B4A ایجاد شده، انتقال بدید. همین :)

 

با ایجاد پروژه، همونطور که مشاهده میکنید در اکتیویتی Main، یسری تغییرات ایجاد شده؛ نباید به اینها کاری داشته باشیم و کد نویسی ما بجای اکتیویتی Main، از کلاس B4XMainPage شروع میشه.

 

**** این نکته رو داشته باشید که برای استفاده از B4XPages، باید کتابخونش رو هم فعال کرد که البته بعد از ایجاد یک پروژه B4XPages، بطور پیشفرض، فعاله

 

کلاس B4XMainPages که بطور پیشفرض ایجاد شد، دقیقا عین اکتیویتی Main هست و اولین صفحه‌ایه که نمایش داده میشه.

الگوی کلاس‌های B4XPages، بسیار ساده هست:

Sub Class_Globals
    Private Root As B4XView 'ignore
    Private xui As XUI 'ignore
End Sub

Public Sub Initialize

End Sub

'This event will be called once, before the page becomes visible.
Private Sub B4XPage_Created (Root1 As B4XView)
    Root = Root1
    'load the layout to Root

End Sub

پس بعد از ایجاد پروژه، هر کد اضافی مشاهده کردید، میتونید پاکشون کنید. :)

متغیر B4XView، زمانی بکار میره که بخوایم همزمان برای چند پلتفرم برنامه بنویسیم.

 

  • همونطور که در جلسات قبل گفته شد، در B4XPages، رویداد Process_Globals وجود نداره و مثل دیگر کلاس‌ها فقط ساب Class_Globals هست که دقیقا کار Process_Globals رو انجام میده.
  • دو متغیر Root و XUI، بطور پیشفرض تعریف شدن. پیشنهاد میکنم این دو رو حذف نکنید...
  • رویداد B4XPage_Created وقتی برای اولین بار پیج نمایش داده می‌شه، اجرا میشه و باید لایوت رو هم، در همین ساب لود کرد؛ دقت کنید پیج‌ها هرگز از بین نمیرن، پس این ساب، فقط یکبار اجرا میشه.
  • بطور پیشفرض، یک کد ماژول به اسم B4XPages در کتابخونه B4XPages وجود داره و برای دسترسی به ویژگی‌های مختلف پیج‌ها(مثل تایتل پیج، ایجاد پیج جدید و ...)، از این ماژول استفاده می‌کنیم.
  • هر پیج، یک id از نوع String داره که به حروف کوچیک و بزرگ هم حساسه، id صفحه اصلی (B4XMainPage)، عبارت "MainPage" هست.

 

*** نحوه لود کردن لایوت در B4XPage_Created:

Private Sub B4XPage_Created (Root1 As B4XView)
	Root = Root1
	'load the layout to Root
	Root.LoadLayout("Layout1")
End Sub

 

*** نحوه اضافه کردن یک پیج:

برای افزودن پیج، همچون اکتیویتی‌ها، از مسیر Project -> Add New Module -> Class Module -> B4XPage رو انتخاب میکنیم و با نامگذاری نامی مناسب(اینجا، از B4XPage2 استفاده میکنم)، کلاس رو اضافه میکنیم. دقت کنید که الان، فقط کلاس اضافه شده و هنوز پیجی جدید نداریم. برای ایجاد پیج، اول باید یک متغیر از این کلاس ایجاد کنیم و از کد ماژول پیشفرض در کتابخونه B4XPages، بشکل زیر در مکان دلخواه(که بهترین مکان، همون ساب B4XPage_Created هست) استفاده کنیم:

Private Sub B4XPage_Created (Root1 As B4XView)
    Root = Root1
    'load the layout to Root
	
	Dim Page2 As B4XPage2
	Page2.Initialize

	B4XPages.AddPage("Page 2", Page2)
End Sub
  • همونطور که گفتم، اول متغیر Page2 رو از نوع کلاسی که اضاف کردیم، تعریف و اون رو Initialize می‌کنیم.
  • و بعد از متد AddPage کد ماژول B4XPages برای اضافه کردن پیج استفاده میکنیم.
  • همونطور که مشاهده می‌کنید، متد AddPage، دو آرگومان داره، اولی همون id پیج هست (که بالاتر کامل توضیح دادم) و دومی، همون متغیری هست که تعریف کردیم.

 

*** نحوه نمایش یک صفحه:

بعد از اینکه پیج رو اد کردیم، در مکانی دلخواه (مثلا در رویداد کلیک دکمه) با کد زیر به صفحه بعد میریم و اون رو نمایش میدیم:

B4XPages.ShowPage("Page 2")
  • متد ShowPage، یک ورودی داره که همون id صفحه مورد نظر هست.
  • دقت کنید که در حال حاضر، با این کد، پیج قبلی (MainPage) از بین نرفته و تمام خصوصیات، رویدادها ویوهای اون دردسترس هستن و هرگز ریست نمیشن. (پس نیازی به Initialize دوباره متغیرها نیست)
  • نکته بسیااار مهم دیگه‌ای که هست، اینه که اگر دوباره صفحه MainPage رو نمایش بدیم، دیگه ساب B4XPage_Created اجزا نمیشه

اما بعضی وقتها لازم هست، که دوباره یکسری چیزها مقدار دهی شن و یا بهر دلیلی لازم داریم که این ساب دوباره اجرا شه. برای این کار باید بجای استفاده از متد ShowPageٍ، از کد زیر استفاده کنیم:

B4XPages.ShowPageAndRemovePreviousPages("Page 2")

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

 

برای درک بهتر موضوع، سورس ساده زیر رو حتما بررسی کنید:

ThreePagesExample.zip

 

اگر نتوستم درست توضیح بدم، ببخشید

جلسه بعد، بیشتر با خصوصیات و رفتار B4XPages آشنا میشیم.

 

موفق باشید

اگر نقدی، مشکلی و یا ایرادی از بنده هست، تو خصوصی میتونید پیام بدید. حتما استقبال میکنم. :) 

:53::53::53::53:

  •  
  • پسندیدن 4
  • تشکر 1

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به عنوان یک لینک به جای

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


×
×
  • جدید...