آموزش BadgeCounter در برنامه نویسی اندروید
سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش BadgeCounter در برنامه نویسی اندروید می پرازین شاید بپرسید Badge چیست ؟ badge برای نمایش یک عدد در بخش Menu یا Toolbar نمایش می دهد اپلیکیشن دیجی کالا نیز از این کتاب خانه استفاده می کنید در ادامه می توانید پیش نمایشی از آن را مشاهده کنید با ما همراه باشید.
ابتدا باید یک کتاب خانه را به پروژه خود اضافه کنید.
برای اینکار وارد فایل Build.gradle از نوع Module شده سپس در بخش dependencies خط زیر را اضافه کنید.
1 | compile 'com.github.juanlabrador:badgecounter:1.0.2@aar' |
پروژه را sync کنید. علت خطاهای گریدل را قبلا بررسی کردیم کافی است در سایت واژه گریدل را جستجو کنید.
باید یک پوشه به نام menu ایجاد کرده و در آن یک فایل به نام menu.xml ایجاد کنید سپس کدهای زیر را در آن قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity"> <item android:id="@+id/action_settings" android:title="@string/action_settings" android:orderInCategory="100" app:showAsAction="never" /> <item android:id="@+id/notification" android:title="Notification" app:actionLayout="@layout/badge_counter" app:showAsAction="always"/> </menu> |
سپس در MainActivity.java یا اکتیویتی که می خواهید این منو را نمایش دهید کد زیر را قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu, menu); if (mNotificationCounter > 0) { BadgeCounter.update(this, menu.findItem(R.id.notification), R.mipmap.ic_notification, BadgeCounter.BadgeColor.BLUE, mNotificationCounter); } else { BadgeCounter.hide(menu.findItem(R.id.notification)); } return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } else if (id == R.id.notification) { mNotificationCounter--; BadgeCounter.update(item, mNotificationCounter); } return super.onOptionsItemSelected(item); } |
در بالا تو Notification در سمت چپ نمایش داده می شوند BadgeColor رنگ عدد را مشخص می کند. BadgeCounter.hide در صورتی که مقدار notification کمتر از صفر بود باید badge نمایش داده نشود و در void دوم onOptionsItemSelected مقدار کلیک بروی Notficaition را قرار دادیم که مقدار را از آن کم می کند پس mNotificationCounter از مقدار عدد badge کم می کند و دقت کنید منو باید Inflate شود تا در menu نمایش داده شود.
این آموزش هم به پایان رسید.
موفق و پیروز باشید
سلام خسته نباشید .
من طبق آموزشتون پیش رفتم اما اینو اررور میده :
mNotificationCounter
میگه تعریف نشده
مشکل از کجاس ؟
سلام خیلی ممنون
خب باید تعریف بشه دیگه آن یک مثال بودش باید اینطوری بنویسید.
خب این NotificationCounter چی هست ؟ ما که کلاسی به نام NotificationCounter ثبت نکردیم . میشه یه آموزش ویدیویی بزارید یا اینک یک نمونه کد ؟
با چک کردن کد های لایبراری https://github.com/juanlabrador/BadgeCounter/ فهمیدم در واقع mNotificationCounter یک متغییر عددی هستش که شما باید تعریفش کنید ، این هم مثال :
package com.github.juanlabrador.badgenotification;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import com.github.juanlabrador.badgecounter.BadgeCounter;
public class DemoActivity extends AppCompatActivity {
private int mNotificationCounter = 17;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_demo);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_demo, menu);
//you can add some logic (hide it if the count == 0)
if (mNotificationCounter > 0) {
BadgeCounter.update(this,
menu.findItem(R.id.notification),
R.mipmap.ic_notification,
BadgeCounter.BadgeColor.BLUE,
mNotificationCounter);
} else {
BadgeCounter.hide(menu.findItem(R.id.notification));
}
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
} else if (id == R.id.notification) {
mNotificationCounter–;
BadgeCounter.update(item, mNotificationCounter);
}
return super.onOptionsItemSelected(item);
}
}
چطوری میتونیم اینو ببریم سمت چپ تولبار ؟
اضافه که میشه میاد سمت راست