در گذشته برای اینکه به کاربر حوادث مختلف اپلیکیشن را اطلاع دهند، از Toast استفاده میکردند. اما امروزه ابزار قدرتمند تری نسبت به Toast روی کار آمده است که میتوانید از آن به جای Toast استفاده کنید. Snack Bar که به ابزار جادویی برای برنامه نویسان اندروید معروف است، دارای امکانات بیشتری به نسبت Toast در اندروید است که این دلیل باعث برتری Snack Bar و منسوخ شدن Toast شده است. در ادامه ی این مطلب Snack Bar و Toast را با هم مقایسه میکنیم و به ویژگیها، روش ساخت و هر آنچه که باید درباره اسنک بار بدانید، می پردازیم.
اسنک بار چیست و چه کاری انجام می دهد؟
اسنک بار یک هشدار است. یک بنر کوچک که در پایین صفحه گوشی کاربر ظاهر میشود. ممکن است برای نشان دادن هر نوع خطای فرم به کاربر، تأیید انجام یک اقدام یا هشدار دادن به آن ها برای انجام برخی اقدامات، بسیار مفید باشد. علاوه بر این، اسنک بار همچنین میتواند دکمهای را برای یک اقدام سفارشی مانند «رد کردن»، «تلاش مجدد»، «لغو» و غیره ارائه دهد. اسنک بارها به کاربران از فرآیندی اطلاع می دهند که یک برنامه انجام داده یا انجام خواهد داد و ظاهر شدن اسنک بار میتواند از آن عمل جلوگیری کند. به عنوان مثال شاید برای همه ما پیش آمده باشد که وقتی یک فایل را حذف میکنیم، بلافاصله یک نوار زیر صفحه ظاهر میشود. هشداری که به ما تا چند لحظه فرصت میدهد که گزینه Undo را بزنیم. تا فایلی که حذف کردیم را برگردانیم. به این نوار، اسنک بار مبارزه می گویند. همچنین برای ناپدید شدن، نیازی به ورودی کاربر ندارند و خودشان بعد از چند دقیقه ناپدید میشوند.
تفاوت اسنک بار با toast
استفاده از toast آسان است. اما به عنوان یک توسعه دهنده، در کارهایی که می توانید با یک toast انجام دهید، محدود هستید. یعنی تنها کاری که می توانید انجام دهید این است که چیزd ساده در آن بنویسید. در واقع این تاییدیهای از یک رویداد کوتاه است. اما اگر مخرب بود چه؟ مانند حذف یک فایل. ممکن است کاربر قصد انجام این کار را نداشته باشد، پس اکنون وحشت زده و به دنبال خنثی سازی است. متعجب که چرا قبل از حذف آن عکس، درست بررسی کرده است؟ به همین دلیل toast کم کم از بین رفت و جای خود را به اسنک بار داد. اسنک بار شبیه toast می باشد. اما تعاملیتر است و استفاده از آن نیز آسان است. می توانید از آن برای برگشتن فایل حذف شده استفاده کنید و اگر به آن توجه نکنید خود به خود ناپدید میشود.
چگونه یک اسنک بار درست کنید؟
روش ساخت اسنک بار در اندروید طبق مراحل زیر است:
مرحله 1: یک پروژه جدید در com.snackbar example و ایجاد کنید و نام آن Snackbar Example است.
مرحله 2: ساخت را باز کنید. gradle و کتابخانه پشتیبانی طراحی زیر را برای پروژه خود اضافه کنید.
مرحله 3: اکنون activity_main را باز کنید. xml و کد زیر را وارد کنید
مرحله 4: MainActivity را باز کنید. جاوا و کد نمونه را اضافه کنید و سپس خروجی بگیرید.
کد نمونه اسنک بار
two.setOnClickListener(newView.OnClickListener() {@Overridepublic void onClick(View v){Snackbar snackbar = Snackbar.make(coordinatorLayout,"Message is deleted", Snackbar.LENGTH_LONG).setAction("UNDO",newView.OnClickListener() {@Overridepublic void onClick(View view){Snackbar snackbar 1 = Snackbar.make(coordinatorLayout,"Message is restored!", Snackbar.LENGTH_SHORT);snackbar 1.show();}});snackbar.show();}});
نکاتی در مورد کدهای ساخت Snack Bar
همانطور که هر برنامه نویسی میداند در برنامه نویسی اندروید، برای استفاده از هر گونه شی و ابزاری باید یک شی جدید از آن بسازید. برای ایجاد Snack Bar در AppCompatActivity، از متد استاتیک کلاس اسنک بار به نام make استفاده کرده و متد 3 آرگومان را دریافت میکنید.
انواع آرگومانها
- آرگومان اول اسنک باری است که در layout خود ساختهاید و می توانید آن را به وسیله آیدی به این متد معرفی کنید.
- آرگومان دوم یک متن ساده است که شما تعیین می کنید در اسنک بار نمایش داده شود.
- آرگومان سوم مدت زمانی می باشد که میخواهید این اسنک بار به کاربر نمایش داده شود.
تنظیم حالت های Snack Bar
در هنگام استفاده از Snack Bar، سومین آرگومان ارسال شده به متد make، مدت زمان نمایش Snack Bar را مشخص میکند. اسنک بارهای اندروید سه دسته می شوند که در ادامه با هم بررسی می کنیم.
- از مدت زمان نمایش Snack Bar برای کاربر ثابت، LENGTH_SHORT میباشد که زمان کوتاهی اسنک بار را نمایش میدهد.
- از مدت زمان نمایش Snack Bar برای کاربر ثابت، LENGTH LONG میباشد که مدت زمان بیشتری نسبت به گزینه اول اسنک بار را به نمایش میگذارد.
- از مدت زمان نمایش Snack Bar برای کاربر ثابت، LENGTH INDEFINITE میباشد که معمولا برای زمانهایی استفاده میشود که قصد دارید در مدت زمانی که عملیاتی انجام میشود، کاربر اسنک بار را مشاهده کند.
ویژگی های Snack Bar
اسنک بارها حاوی یک برچسب متنی هستند که مستقیماً به فرآیند در حال انجام مربوط می شود. در تلفن همراه، برچسب متن میتواند حداکثر دو خط متن داشته باشد. البته انجام دادن در تلفن همراه، از حداکثر دو خط متن برای برقراری ارتباط پیام اسنک بار استفاده میشود. اما در رابطهای دیگر مثل تبلت اسنک بار فقط یک خط دارد.
اسنک بارها در قالب مستطیلی با پس زمینه خاکستری نمایش داده می شوند. ظروف باید کاملا مات باشند، به طوری که برچسب های متنی خوانا باقی بمانند. انجام دادن قالب Snack Bar از رنگ پس زمینه ثابت با سایه استفاده میکنند تا در مقابل محتوا متمایز شوند. برای اینکه کاربران بتوانند انتخابها را اصلاح کنند، یک عمل «واگرد» را نمایش دهید. Snack Bar باید مستقیماً بالای عناصر پاورقی ثابت ظاهر شوند.
ظاهر شدن و ناپدید شدن اسنک بار چگونه است؟
اسنک بارها بدون هشدار ظاهر میشوند و نیازی به تعامل کاربر ندارند. آن ها به طور خودکار پس از حداقل چهار ثانیه و حداکثر ده ثانیه از صفحه نمایش محو می شوند.
چگونه میتوانم پیام Snack Bar را رد کنم؟
رد کردن Snack Bar یک اقدام رد کردن ضروری نیست. زیرا نوار اسنک به طور پیش فرض خود به خود ناپدید می شود. یک اسنک بار را میتوان به صورت دستی با رد کردن آن یا کشیدنش به راست یا چپ از بین برد. مثل رد کردن یک تماس آن را به بغل بکشید تا ناپدید شود. همچنین اگر یک نوار اسنک جدید باز شود در حالی که پیام قبلی هنوز نشان داده می شود، پیام قدیمی به طور خودکار رد می شود.
محدودیت های اندازه اسنک بار
در صفحههای کوچک، مثل گوشیهای تلفن همراه نوارهای Snack Bar باید به صورت عمودی از 48dp به 64dp گسترش پیدا کنند. تا یک یا دو خط متن را در خود جای دهند، در حالی که فاصله ثابتی از لبههای جلویی، انتهایی و پایینی صفحه را حفظ میکنند. در صفحههای متوسط و بزرگ، مثل تبلت یا دسکتاپ نوارهای اسنک باید به صورت افقی تنظیم شوند تا رشتههای متنی طولانی تر را در خود جای دهند. به خاطر داشته باشید که طول خط ایدهآل برای متن معمولاً بین 40 تا 60 کاراکتر است.
نوارهای Snack Bar از فاصله انعطاف پذیری از لبه انتهایی صفحه استفاده میکنند. در صورت امکان، نوارهای اسنک بار روی نمایشگاه های متوسط و بزرگ باید یک خط متن را با یک دکمه اختیاری هدف قرار گیرد. نوارهای Snack Bar تنها زمانی می توانند کل عرض صفحه را بپوشانند که یک رابط کاربری از اجزای پیمایش دائمی مانند نوارهای برنامه یا نوارهای پیمایش پایین استفاده نکند.
ویژگیهای برچسب متن
- سبک برچسب متن: N/A
- برچسب متن : android:text
- رنگ: android:textColor
- تایپوگرافی: android:textAppearance
ویژگیهای کانتینر
- رنگ:backgroundTint
- پوشش رنگ آلفا:background Overlay Color Alpha
- لبه : android:layout_margin
ویژگیهای تم
- حالت انیمیشن: animationMode
- سبک دکمه اکشن : attr/snackbar Button Style
- سبک برچسب متن : attr/snackbar TextViewStyle
ویژگیهای نمایشی
- نمایش برای مدت زمان کوتاه: Snackbar.LENGTH_SHORT
- نمایش برای مدت زمان طولانی : Snackbar.LENGTH_LON
- تا زمانی که آن را ببینید نمایش داده شود: Snackbar. LENGTH _ INDEFINITE
چگونه رنگ دکمه Snack Bar خود را تغییر دهم؟
- کد رنگ ایجاد کنید و res /values /colors.xml را باز کنید و این خط Custom Code را اضافه کنید.
- Snack Bar را ایجاد کنید و پس زمینه را تغییر دهید.
- مشاهده اسنک بار را دریافت کنید.
- تغییر رنگ پس زمینه را اعمال کنید.
- بنابراین می توانید پس زمینه تغییر یافته به رنگ دلخواه را مشاهده کنید.
مزیتهای استفاده از اسنک بار به جای Toast
در زیر چند مزیت استفاده از اسنک بار نسبت به Toast آورده شده است که شامل:
1.میتوان آن را طوری برنامهریزی کرد که عملی را که توسط یک کاربر انجام شده است، خنثی یا معکوس کند. به عنوان مثال، بازیابی یک فایل اخیراً حذف شده یا حتی باز کردن مجدد برگه مرورگری که به تازگی بسته شده است.
2.کاربر می تواند به صورت دستی نوار Snack Bar را به سمت راست یا چپ بکشد تا به سرعت آن را رد کند. برخلاف Toast که باید تا پایان زمان تعیین شده برای آن باقی بماند.
3.نوار Snack Bar فقط در پایین صفحه نمایش داده میشود، برخلاف Toast که ممکن است قسمت مهمی از صفحه را مسدود کند.