دوره مجازی اندروید (جلسه 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 دیدگاه کاربران
Nima Arian replyپاسخ

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

سعید شاهینی

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

علی اسماعیلی replyپاسخ

سلام بنر اسلایدر که گذاشتید حالت null نداره اصلا ایندیکیتور نداشته باشه اصلا ممنون جلسه عالی بود

سعید شاهینی

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

Ali Movahedi replyپاسخ

هوراا بالاخره اموزش های درخواستی که منتظرش بودیم 🙂
تشکر از اقای شاهینی بابت زحماتشون

جواد اشکش replyپاسخ

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

سعید شاهینی

سلام، منظورتون یه چیزی شبیه html هست؟

مرتضی مرادی replyپاسخ

سلام استاد عزیز لطفا تو بخش سوم آموزش google analytic رو هم بزارید ،
مگه میشه دوره حرفه ای باشه ولی google analytic نداشته باشه ؟ ! 😯

سعید شاهینی

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

مرتضی مرادی

تشکر از شما

علی رضایی replyپاسخ

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

سعید شاهینی

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

Nima Arian

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

مرتضی مرادی

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

Amirhossein Ashrafi replyپاسخ

جلسه بسیار عالی بود . تشکر از استاد
همانطور که خودتون گفتین استاد ، چند تا درخواست دارم تا در جلسه ی بعد بررسی بشه.
1- بررسی اپلیکیشن هایی مانند موبوگرام و پلاس که به سرور تلگرام متصل هستند اما اومدن امکانات بیشتری رو بهش اضافه کردن و تغییر ظاهر دادن و غیره …. ( چطوری میان از سرور تلگرام استفاده میکنند و بهش قابلیت های جدید اضافه میکنند؟)
2- چجوری میشه بازی هایی مانند باقلوا یا مستر مخ که در کافه بازار منشر شده رو ساخت ؟ این دو بازی در دسته بندی کلمات هست .یعنی بازی ساده ای هستن اما پر طرفدار . با اندروید استدیو میسازن یا نرم افزار های دیگه ؟ اگر امکانش هست قابلیت ها و روش ساخت این بازی ها بررسی بشه.
3- سرویس های گوگل که برای برنامه های اندرویدی وجود داره رو هم در جلسات بعدی توضیح بدید مانند (Google Analytics)
با تشکر

سعید شاهینی

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

Milad Fasahat replyپاسخ

سلام اگه میشه دررابطه با تغییر سورس برنامه ها هم توضیح بدین مثلا شبکه های اجتماعی (تلگرام و …) ممنونم

سعید شاهینی

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

milad boos replyپاسخ

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

Amirhossein Ashrafi replyپاسخ

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

سعید شاهینی

سلام، متاسفانه وقت کافی نداشتم، اگه می خواستم سمت سرور رو هم آموزش بدم و کامل پیاده سازی کنیم خودش 2 جلسه زمان می برد. ولی واقعا تفاوتی نداره، فقط کافیه که هر موقع می خواهید api رو کال کنید، page رو به سرور ارسال کنید، سمت سرور بر اساس page پست ها رو از دیتابیس می خونید.

iranianseda replyپاسخ

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

سعید شاهینی

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

iranianseda replyپاسخ

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

سعید شاهینی

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

iranianseda

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

سعید شاهینی

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

Ali Movahedi replyپاسخ

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

سعید شاهینی

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

Ali Movahedi

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

Amirhossein Ashrafi replyپاسخ

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

سعید شاهینی

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

mehdi eslami replyپاسخ

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

سعید شاهینی

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

iranianseda replyپاسخ

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

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

سعید شاهینی

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

Desert replyپاسخ

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

سعید شاهینی

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

Desert replyپاسخ

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

سعید شاهینی

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

ارسال نظرات

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