কম্পিউটার টিউটোরিয়াল

টুলবার আইকনে নোটিফিকেশন কাউন্ট বッジ দেখানো


কাস্টম টুলবার লেআউট দিয়ে নোটিফিকেশন বッジ কাউন্ট প্রদর্শন

অ্যান্ড্রয়েডে নেটিভ টুলবার আইকনে বッジ (নাম্বার) দেখাতে হলে কাস্টম ভিউ ব্যবহার করতে হয়। এই উদাহরণে একটি টুলবারের 오른পাশে বাটন এবং তার উপরে একটি রেড বেজ বबल সংখ্যা দেখানো হয়েছে।

ধাপ ১: প্রজেক্ট তৈরি

Android Studio-তে নতুন প্রজেক্ট তৈরি করুন।

ধাপ ২: লেআউট - কাস্টম টুলবার

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Toolbar
        android:layout_width="match_parent"
        android:layout_height="?actionBarSize"
        android:background="@color/colorPrimary">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginEnd="16dp">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:text="Notify Me"
                android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"
                android:textColor="#FFF"
                android:textStyle="bold" />

            <RelativeLayout
                android:id="@+id/notificationBadge"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentEnd="true"
                android:layout_centerVertical="true">

                <RelativeLayout
                    android:id="@+id/badgeLayout"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:paddingTop="8dp">

                    <Button
                        android:layout_width="36dp"
                        android:layout_height="36dp"
                        android:background="@drawable/action_notification" />

                </RelativeLayout>

                <TextView
                    android:id="@+id/tvBadgeNumber"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignTop="@id/badgeLayout"
                    android:layout_alignEnd="@id/badgeLayout"
                    android:background="@drawable/item_count"
                    android:text="0"
                    android:textColor="#FFF"
                    android:textSize="16sp"
                    android:textStyle="bold" />

            </RelativeLayout>

        </RelativeLayout>
    </Toolbar>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_margin="16dp"
        android:onClick="createNotification"
        android:text="নোটিফিকেশন তৈরি করুন" />

</RelativeLayout>

ধাপ ৩: MainActivity.java - কাউন্ট আপডেট

package com.example.toolbarbadge;

import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.NotificationCompat;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    public static final String CHANNEL_ID = "toolbar_badge_channel";
    private static final String DEFAULT_CH = "default";
    private static int notificationCount = 0;
    private TextView tvBadgeNumber;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tvBadgeNumber = findViewById(R.id.tvBadgeNumber);
    }

    public void createNotification(View view) {
        Intent intent = new Intent(getApplicationContext(), MainActivity.class);
        intent.putExtra("fromNotification", true);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_IMMUTABLE);

        NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this, DEFAULT_CH)
                .setContentTitle("আমার নোটিফিকেশন")
                .setContentIntent(pendingIntent)
                .setContentText("Notification Listener Service Example")
                .setTicker("Notification Listener Service Example")
                .setSmallIcon(R.drawable.ic_launcher_foreground)
                .setAutoCancel(true);

        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
            NotificationChannel ch = new NotificationChannel(CHANNEL_ID, "Toolbar Badge Channel", NotificationManager.IMPORTANCE_HIGH);
            builder.setChannelId(CHANNEL_ID);
            if (nm != null) nm.createNotificationChannel(ch);
        }

        if (nm != null) nm.notify((int) System.currentTimeMillis(), builder.build());

        // ★ কাউন্ট বাড়ানো এবং UI আপডেট
        notificationCount++;
        tvBadgeNumber.setText(String.valueOf(notificationCount));
    }
}

ধাপ ৪: ড্রয়েবল - বেজ ব্যাকগ্রাউন্ড (রেড সার্কেল)

res/drawable/item_count.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="https://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="8dp" />
    <solid android:color="#2196F3" /> <!-- নীল রঙ, চাইলে লাল #FF0000 দিন -->
    <stroke android:width="1dip" android:color="#FFF" />
    <padding android:bottom="2dp" android:left="2dp" android:right="2dp" android:top="2dp" />
</shape>

ধাপ ৫: নোটিফিকেশন আইকন ড্রয়েবল

res/drawable/action_notification.xml (Vector Asset বা PNG ব্যবহার করুন):

<vector xmlns:android="https://schemas.android.com/apk/res/android"
    android:width="24dp" android:height="24dp"
    android:viewportWidth="24" android:viewportHeight="24">
    <path android:fillColor="#FFF" android:pathData="M12,22c1.1,0 2,-0.9 2,-2h-4c0,1.1 0.9,2 2,2zM18,16v-5c0,-3.07 -1.64,-5.64 -4.5,-6.32V4c0,-0.83 -0.67,-1.5 -1.5,-1.5s-1.5,0.67 -1.5,1.5v0.68C7.63,5.36 6,7.92 6,11v5l-2,2v1h16v-1l-2,-2z"/>
</vector>

ধাপ ৬: AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.example.toolbarbadge">

    <uses-permission android:name="android.permission.VIBRATE" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.ToolbarBadge">

        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
</manifest>

পরীক্ষা

অ্যাপ রান করুন। প্রতিবার "নোটিফিকেশন তৈরি করুন" চাপলে টুলবারের ডান পাশের বেল আইকনের উপরে সংখ্যা বাড়বে (১, ২, ৩...।)

  1. অ্যান্ড্রয়েড এলার্ট ডায়ালগে ListView প্রদর্শনের পদ্ধতি

  2. অ্যান্ড্রয়েডে Toast মেসেজ দেখানোর পদ্ধতি

  3. অ্যান্ড্রয়েড অ্যাপে নোটিফিকেশন কাউন্ট কীভাবে দেখাবেন?

  4. এন্ড্রয়েড ৮ Snooze মাস্টার করুন: ভালো ঘুমের জন্য নোটিফিকেশন ম্যানেজ করুন