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

دسته بندی: اندروید
زمان مطالعه: 1 دقیقه
۱۹ آذر ۱۳۹۵

به نام خدا

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

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

  • آموزش ساخت لیست بی پایان با استفاده از کتابخانه 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'
:: توجه

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

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

چه امتیازی به این مقاله می دید؟
نویسنده سعید شاهینی

جلسات دوره

نظرات کاربران

Desert

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

سعید شاهینی

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

Desert

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

سعید شاهینی

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

iranianseda

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

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

سعید شاهینی

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

mehdi eslami

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

سعید شاهینی

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

Amirhossein Ashrafi

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

سعید شاهینی

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

Ali Movahedi

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

سعید شاهینی

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

Ali Movahedi

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

مرتضی مرادی

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

مرتضی مرادی

تشکر از شما

Nima Arian

آقای رضایی این حرف شما از اون حرفاست که آدم اگه نخواد هم باید به افق خیره بشه شما دنبال کیفیت هستین یا کمیت ؟

سعید شاهینی

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

iranianseda

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

سعید شاهینی

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

سعید شاهینی

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

پایان زمان پشتیبانی

دانشجوی گرامی، بازه پشتیبانی فعال برای این دوره ۳ ماه است که برای شما به پایان رسیده است.

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

نیاز به لاگین

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