دوره مجازی اندروید (جلسه 39): آموزش های درخواستی دانشجویان - قسمت اول

- visibility ۴٠ mode_comment

به نام خدا

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

مطالب مطرح شده در این جلسه:

  • آموزش ساخت لیست بی پایان با استفاده از کتابخانه InfiniteScrollProvider
  • آموزش ساخت اسلایدر با استفاده از کتابخانه BannerSlider
  • آموزش ساخت BottomNavigation با استفاده از Bottom navigation

لینک کتابخانه ها در گیت هاب: https://github.com/saeedsh92

نکته ی بسیار مهم: برای استفاده از کتابخانه های معرفی شده در این جلسه حتماً باید آخرین نسخه های SupportLibrary, BuildTools, SdkTools را از Sdk manager دانلود نمایید.

برای اضافه کردن کتابخانه ها لازم است تکه کد زیر را به Build.gradle ماژول app، داخل بلاک repositories اضافه نمایید:

maven {
    url "https://dl.bintray.com/saeedshahiniit/material-views"
}

مثال:

repositories{
    jcenter()
    maven {
        url "https://dl.bintray.com/saeedshahiniit/material-views"
    }
}

برای اضافه کردن کتابخانه ها، کدهای زیر را داخل بلاک dependencies اضافه نمایید:

آدرس دانلود کتابخانه BannerSlider

compile 'com.ss.bannerslider:bannerslider:1.2'

آدرس دانلود کتابخانه InfiniteScrollProvider

compile 'ss.com.infinitescrollprovider:infinitescrollprovider:1.1'

آدرس دانلود کتابخانه BottomNavigation

compile 'com.ss.bottomnavigation:bottomnavigation:1.4.2'
info توجه

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

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

comment دیدگاه کاربران
iranianseda

InfiniteScrollProvider تو اموطش دریافت اطلاغات از سروری که گذاشتید رو نمی شه کارد کرد؟ حتما باید از سرور page بگیریم؟

سعید شاهینی

منظورتون از کارد چیه؟ page رو از سرور نمی گیرید، page رو به سرور می فرستید تا پست های مربوط به اون پیج دریافت بشوند.

iranianseda

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

سعید شاهینی

متاسفانه پیاده سازی همچین کاری نیاز به زمان داره، چون باید سمت سرورش رو هم طراحی کنم که داخل یک جلسه امکان پذیر نیست.

iranianseda

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

سعید شاهینی

سلام، متاسفانه همچین موضوع نیاز به پیاده سازی سمت سرور داره و امکانش نیست

Ali Movahedi

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

سعید شاهینی

سلام احتمالا 2 تا 3 هفته دیگه برگزار شه

Ali Movahedi

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

Amirhossein Ashrafi

استاد من هنوز درگیر InfiniteScroll هستم !!
من اطلاعات پست رو از سمت سرور میگیرم و طبق آموزشی که داده بودین ، این اطلاعات رو داخل جدول ذخیره میکنم .( برای زمانی که کاربر نت نداره بتونه آفلاین بخونه)
الان بدجور گیر کردم . هر چقدر هم گشتم چیزی پیدا نکردم کارمو راه بندازه.
من الان باید اگر کاربر به اینترنت وصل بود 10 تا 10 بیاد از سرور بخونه و نمایش بده و اگر وصل نبود 10 تا 10 تا از دیتابیس بخونه. واقعا خیلی سخت شده الان .
اگر میشه یک راهنمایی کنید که بدرد من بخوره.
هم تو ارسال page به سرور مشکل دارم . هم زمانی که باید تشخیص بده از سرور کم کم بخونه یا دیتابیس
ممنون

سعید شاهینی

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

mehdi eslami

سلام وقتتون بخیر
من یه مشکلی دارم
مثلا ده تا صفحه توی سرور دارم و وقتی به انتهای صفحه دهم میرسم InfiniteScrollProvider توقف نمیکنه
چیکار کنم که من به InfiniteScrollProvider بگم من ده تا صفحه دارم و وقتی به صفحه دهم رسیدی دیگه InfiniteScrollProvider اجرا نشه؟

سعید شاهینی

سلام، خودش وقتی به آخر لیست برسه و هیچ اطلاعاتی دریافت نکنه، دیگه متد onLoadMore صدا زده نمی شه. شما نیاز به کنترل این وضعیت ندارید.

iranianseda

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

Error:Execution failed for task ‘:app:processDebugManifest’.
> Manifest merger failed with multiple errors, see logs

سعید شاهینی

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

Desert

سلام استاد عزیز خسته نباشید بنده یک سوال در مورد کتابخانه bottom navigation برام پیش امده. در جلسات قبل تر ما اموزش view pager و table layout را داشتیم که یک قابلیت که خیلی مشابه bottom navigation بود در بالای صفحه امان اضافه کنیم که البته می توانستیم ان را پایین هم قرار بدهیم .سوال بنده این است که با توجه به پیچیدگی پیاده سازی table layout و view pager در مقایسه با bottom navigation شما کدام را پیشنهاد می کنید و این که ممنون می شم در مورد تفاوت های انها توضیح بفرمایید. موفق باشید.

سعید شاهینی

سلام، وقت بخیر
ViewPagerبا BottomNavigation هیچ شباهتی به ندارن! هر کدوم یه کار متفاوت رو انجام می دن. ViewPager وظیفش ساختن، لود کردن و تغییر نحوه ی نمایش فرگمنت هاست. ولی BottomNavigation کاملا یک استاندارده رابط کاربری هستش و جز چند تا دکمه چیز خاصی نداره.

Desert

سلام استاد عزیز بنده سوالی از خدمتتان داشتم . عذرخواهی می کنم سوالاتم مربوط به این قسمت از اموزش زیاد شدند.
استاد شما در هنگام اضافه کردن BottomNavigation به لی اوت به ان ارتفاع 56dp دادید .سوال بنده این است که ایا ارتفاع دادن به این صورت یعنی عددی موجب نمی شود که در گوشی هایی با سایز های صفحه ی مختلف و یا رزولوشن های مختلف با مشکل برخورد کنیم ؟ بنده تا الان سعی می کردم با توجه به ان چه اموخته بودم تا جایی که امکان داشت از ویژگی هایی مانند weight برای اندازه استفاده کنم که ان هم دردسر های خودش را دارد و دیلیلی که باعث می شد با عدد اندازه ندهم را بالا برای تان گفتم ممنون می شوم در این خصوص راهنمایی بفرمایید به طور مثال بنده در اکتیویتی ام یک bottom navigation دارم در پایین صفحه و می خواهم که باقی صفحه را به یک فرگمنت اختصاص دهم بهترین حالت برای این کار به چه صورت است؟ ممنون موفق باشید.

سعید شاهینی

سایز 56dp استاندارد متریال دیزاین هست و روی هیچ گوشی اندرویدی مشکل ایجاد نمی کنه! وقتی شما از واحد 56dp استفاده می کنید دیگه تفاوتی در صفحه نمایش های مختلف وجود نداره و همه جا به یک اندازه نمایش داده می شه.

نیاز به لاگین

برای ارسال دیدگاه و یا پرسیدن سوال خود در این قسمت، باید در سایت لاگین شوید.
1 2