آموزش ساخت اسلایدینگ منو اندروید در b4a

بیسیک فور اندروید
1.6K
0

سلام

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

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

 

 

در این آموزش میخوایم  به شما نحوه ساخت اسلایدینگ منو در بیسیک ۴ اندروید رو یاد بدیم تا به راحتی بنوینید یک منو بسیار زیبا برای برنامه ها تون بسازید

برای این کار ما از کتابخانه SlidingMenuWrapper استفاده میکنیم . در پایین صفحه لینک کتابخانه و سورس کد های استفاده شده در اموزش را قرار داده شده است.

 

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

 

در  ابتدا باید کتابخانه SlidingMenuWrapper رو در پوشه کتابخانه های b4a بریزید  و اون رو فعل کنید

 

در قدم بعدی باید کتابخانه رو به برنامه معرفی کنیم برای این کار  کد زیر را در قسمت Globals  وارد کنید

 

بعد باید برنامه رو Initialize  کنیم  برای این کار کد زیر رو به Activity_Create اضافه کنید.

بعد از این اسلایدینگ منو فعال میشود و به برنامه اضافه میشود ( به همین راحتی )
در ادامه به تنظیمات کتابخانه می پردازیم

 

BehindOffset :

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

توجه کنید که این کد  عرض  منو رو مشخص نمیکنید  بلکه فاصله ی ان از کنار صفحه رو مشخص میکنید. به نظر من برای منو های معمولی  بهترین مقدار ۳۵% است.

بهتر است این کد و کد های بعدی را به Activity_Create اضافه کنید

کد زیر به برنامه اضافه کنید

 

Mode :

این کد حالت  منو رو مشخص میکنید

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

Right : در این حالت منو از سمت راست باز میشود

Left : در این حالت منو از سمت چپ باز میشود

BOTH : در این حالت دو تا منو ساخته میشود و یکی از سمت راست و یکی از سمت چپ باز میشود
توجه کنید که این دو منو از هم جدا هستند و محتوای جدایی رو نشان میدند

اگر این کد برنامه اضافه نشود به صورت خودکار حالت Left  فعال میشود

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

 

Menu و SecondaryMenu :

برای این که بخوایم دکمه یا محتوایی را نشان بدیم باید اون رو به menu اضافه کنیم

نحوه کار با منو  کاملا مشابه اکتیویتی ( activity ) میباشد
مثلا اگه شما یک دکمه را به اکتیویتی با کد

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

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

و اما SecondaryMenu

اگه شما در هنگام انتخاب حالت  منو .  حالت سوم یعنی BOTH رو انتخاب کنید

منوی دوم به عنوان SecondaryMenu   شناخته میشود

یعنی برای اضافه کردن محتوا به منوی اصلی باید از کد  زیر استفاده کنید

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

 

 

ShowMenu :

به طور پیش فرض منو ها با کشیدن دست به چپ یا راست باز میشود  اما اگه خواستید خودتون منو رو باز کنید  از کد ShowMenu باید استفاده کنید

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

 

HideMenus :

به طور پیش فرض  منو ها توسط حرکت دست کاربر بسته میشوند   اما اگه خواستید این کار را به صورت دستی انجام بدید از کد HideMenus استفاده کنید

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

برای این کار باید ان کد رو اضافه کنید

کد بالا نباید در داخل Activity_Create  یا sub های دیگه قرار بگیرد  . زیرا Activity_KeyPress خودش یه sub است

 

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

منو رو مخفی کنه در غیر این صورت برنامه بسته بشه

 

تمام

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

در ادامه برای شما لایبری و یک نمونه کد برای اسلایدینگ منو قرار داده شده

 

این اموزش توسط خود سایت dev-iran طراحی شده و زحمت زیادی برای ان کشیده شده

لذا  برای حمایت از ما میتوانید پیشنهادات و انتقادات خود را در بخش نظرات اعلام کنید یا وبسابت ما را به دیگران معرفی کنید
همچنین شما میتوانید با حمایت مالی از سایت به ما در ساخت اموزش های بهتر کمک کنید

 

دوستانی که با کتابخانه مشکل داشتند  : نسخه جدید و بدون مشکل کتابخانه جایگزین شد!

 

دانلود ورژن اولیه

دانلود ورژن جدید

مطالب وب سایت Dev-Iran :

کپی و رایت مطلب به تیم Dev-Iran.ir باز میگردد که در حال حاضر صاحب امتیاز این وب سایت گروه اوکسو می باشد.

کپی و رایت مطالب اوکسو :

قابل توجه علاقه مندان و کپی کنندگان گرامی ، تمامی مطالب این وب سایت تحت مجوز خالق (Creative Commons) می باشد و اجازه کپی کردن ، استفاده تجاری مطالب بدون اجازه صاحب اثر مجاز نمی باشد و طبق مجوز اثر پیگرد قانونی به همراه خواهد داشت.

مجوز کریتیو کامنز
این کار مجوز دارد تحت مجوز کریتیو کامنز نسبت‌دادن-غیرتجاری-بدون انشقاق ۴٫۰ بین‌المللی.

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

تالار گفتمان اوکسوف

همچنین میتوانید ما را در شبکه های اجتماعی نیز دنبال کنید و از جدید ترین اخبار ما با خبر شوید :

اینستاگرام

تلگرام
آپارات

 

نظرات وب سایت

  1. hoda
    پاسخ دادن

    منم موقع اجرا این مشکل دارم خواهشا کمکم کنید
    B4A version 4.30
    Parsing code. 0.00
    Compiling code. 0.02
    Compiling layouts code. 0.00
    Generating R file. 0.07
    Compiling generated Java code. 0.57
    Convert byte code – optimized dex. Error
    UNEXPECTED TOP-LEVEL EXCEPTION:
    java.lang.IllegalArgumentException: already added: Lanywheresoftware/b4a/objects/SlidingMenuWrapper;
    at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:122)
    at com.android.dx.dex.file.DexFile.add(DexFile.java:161)
    at com.android.dx.command.dexer.Main.processClass(Main.java:732)
    at com.android.dx.command.dexer.Main.processFileBytes(Main.java:673)
    at com.android.dx.command.dexer.Main.access$300(Main.java:83)
    at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602)
    at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
    at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
    at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
    at com.android.dx.command.dexer.Main.processOne(Main.java:632)
    at com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:280)
    at com.android.dx.command.dexer.Main.run(Main.java:246)
    at com.android.dx.command.dexer.Main.main(Main.java:215)
    at com.android.dx.command.Main.main(Main.java:106)
    ۱ error; aborting
    Optimized dexer failed. Switching to Standard dexer.

    • مجید بابایی majid
      پاسخ دادن

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

  2. امید رضا
    پاسخ دادن

    سلام مجدد خدمت شما
    مشکل قبلی حل شد طبق راهنمایی که کرده بودید ممنون ولی مشکل جدیدی اضافه شده
    در ایملاتور به درستی نمایش داده میشود ولی در موبایل نوشته ها نمایش داده نمی شود علت چیست
    ممنون که راهنمایی می کنید

    • مجید بابایی majid
      پاسخ دادن

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

    • مجید بابایی majid
      پاسخ دادن

      سلام
      دقیقا مثل view های معمولیه

      همینجوری که یه ایتم به صفحه اضافه میکنید به menu هم اضافه کنید و استفاده کنید

  3. Amirparsa
    پاسخ دادن

    B4A version: 5.80
    Parsing code. (0.00s)
    Compiling code. (0.04s)

    ObfuscatorMap.txt file created in Objects folder.
    Compiling layouts code. (0.00s)
    Generating R file. (0.13s)
    Compiling generated Java code. Error
    Cannot find: D:Basic4androidlibrariesslidingmenu.jar

    این ارور رو میده .. لایبری رو با استفاده از قسمت تولز و پت آدرس دادم . بعد از پایین صفحه از اون کتابه تیک کتابخونه رو هم زدم . ولی این ارور رو میده . حتی یه بار بسیک ۴ اندروید رو هم پاک کردم و نصب کردم بازم نشد .

  4. ALI
    پاسخ دادن

    سلام و درود مجید جان من هنگام کامپایل برنامه با خطای زیر مواجه میشم مشکل از کجاست؟

    B4A version: 5.80
    Parsing code. (0.00s)
    Compiling code. (0.04s)
    Compiling layouts code. (0.00s)
    Generating R file. (0.04s)
    Compiling debugger engine code. (0.85s)
    Compiling generated Java code. (1.12s)
    Convert byte code – optimized dex. Error
    UNEXPECTED TOP-LEVEL EXCEPTION:
    java.lang.IllegalArgumentException: already added: Lanywheresoftware/b4a/objects/SlidingMenuWrapper;
    at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:122)
    at com.android.dx.dex.file.DexFile.add(DexFile.java:161)
    at com.android.dx.command.dexer.Main.processClass(Main.java:615)
    at com.android.dx.command.dexer.Main.processFileBytes(Main.java:570)
    at com.android.dx.command.dexer.Main.access$2(Main.java:546)
    at com.android.dx.command.dexer.Main$2.processFileBytes(Main.java:514)
    at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
    at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
    at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
    at com.android.dx.command.dexer.Main.processOne(Main.java:537)
    at com.android.dx.command.dexer.Main.processAllFiles(Main.java:449)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:236)
    at com.android.dx.command.dexer.Main.run(Main.java:206)
    at com.android.dx.command.dexer.Main.main(Main.java:179)
    at com.android.dx.command.Main.main(Main.java:103)
    ۱ error; aborting

  5. Amirparsa
    پاسخ دادن

    salam . mamnon . ye soal dashtam . zamani ke barname ro run mikonam error mide ke file slidingmenu.jar to ghesmate liberary ha peyda nashode

    darso rati ke ham adres dadam ham az ghesmate ketabe payine safe samte rast tikesho zadam . mersi

    • مجید بابایی majid
      پاسخ دادن

      سلام بعد از ریختن کتابخانه
      برنامه رو بستید دوباهر بالا بیارید ؟
      حتماا اشتباه ریختید
      همون لایبری که کنار فایل بود رو استفاده کردید ؟

  6. فرهاد
    پاسخ دادن

    سلام

    من فایل ضمیمه را دانلود کردم  و فایل ها را در محل مناسب نیز قرار دادم اما همان اول اجرابا خطاهای زیاد مواجه شدم البته این را بگم که فایل های دیگر در سایت که مربوط به برنامه نویسی اندروید و نمونه کتابخانه ها بود را هم دانلود کردم و انها مشکلی نداشتند ولی این بخش ایراد داشت .خطاهایی که از برنامه میگرفت هم مربوط بود به اسم فایل کتابخانه هم نسخه اندروید ۴ و … .

    الان نمیدانم چطوری باید مشکل را حل کنم

  7. Aminer
    پاسخ دادن

    سلام وبسایت عالی ولی متاسفانه مطلب و فعالیت کمی داره از نظر من بهتره نویسنده بگیری چه رایگان و چه پولی یا حتی میتونی یه کاری کنی که بازدید کننده ها هم مطلب بزارن

    • مجید بابایی majid
      پاسخ دادن

      سلام
      ممنون به خاطر نظر خوبتون
      سایت تازه تأسیس شده و فعلا یکم زمان میبره تا سایت تأسیس شده و یکم زمان میبره تا سایت به هدف مورد نظرش برسه

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

ارسال یک نظر .