Computer >> Máy Tính >  >> Lập trình >> Android

Làm cách nào để tạo biểu tượng trên thanh tác vụ với số lượng thông báo trong Android?

Ví dụ này minh họa về Cách tạo biểu tượng trong thanh tác vụ với số lượng thông báo trong Android

Bước 1 - Tạo một dự án mới trong Android Studio, đi tới Tệp ⇒ Dự án Mới và điền tất cả các chi tiết cần thiết để tạo một dự án mới.

Bước 2 - Thêm mã sau vào res / layout / activity_main.xml.

<? 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 = "create notification" />
</RelativeLayout>

Bước 3 - Thêm mã sau vào src / MainActivity.

package app.tutorialspoint.com.notifyme ;
import android.app.NotificationChannel ;
import android.app.NotificationManager ;
import android.app.PendingIntent ;
import android.content.Intent ;
import android.os.Bundle ;
import android.support.v4.app.NotificationCompat ;
import android.support.v7.app.AppCompatActivity ;
import android.view.View ;
import android.widget.TextView ;
public class MainActivity extends AppCompatActivity {
   public static final String NOTIFICATION_CHANNEL_ID = "10001" ;
   private final static String default_notification_channel_id = "default" ;
   static int notificationCount = 0 ;
   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 notificationIntent = new Intent(getApplicationContext() , MainActivity. class ) ;
      notificationIntent.putExtra( "fromNotification" , true ) ;
      notificationIntent.setFlags(Intent. FLAG_ACTIVITY_CLEAR_TOP | Intent. FLAG_ACTIVITY_SINGLE_TOP ) ;
      PendingIntent pendingIntent = PendingIntent. getActivity ( this, 0 , notificationIntent , 0 ) ;
      NotificationManager mNotificationManager = (NotificationManager) getSystemService( NOTIFICATION_SERVICE ) ;
      NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(MainActivity. this, default_notification_channel_id ) ;
      mBuilder.setContentTitle( "My Notification" ) ;
      mBuilder.setContentIntent(pendingIntent) ;
      mBuilder.setContentText( "Notification Listener Service Example" ) ;
      mBuilder.setTicker( "Notification Listener Service Example" ) ;
      mBuilder.setSmallIcon(R.drawable. ic_launcher_foreground ) ;
      mBuilder.setAutoCancel( true ) ;
      if (android.os.Build.VERSION. SDK_INT >= android.os.Build.VERSION_CODES. O ) {
         int importance = NotificationManager. IMPORTANCE_HIGH ;
         NotificationChannel notificationChannel = new NotificationChannel( NOTIFICATION_CHANNEL_ID , "NOTIFICATION_CHANNEL_NAME" , importance) ;
         mBuilder.setChannelId( NOTIFICATION_CHANNEL_ID ) ;
         assert mNotificationManager != null;
         mNotificationManager.createNotificationChannel(notificationChannel) ;
      }
      assert mNotificationManager != null;
      mNotificationManager.notify(( int ) System. currentTimeMillis () , mBuilder.build()) ;
      notificationCount ++ ;
      tvBadgeNumber .setText(String. valueOf ( notificationCount )) ;
   }
}

Bước 4 - Thêm mã sau vào 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" />
   <stroke
      android :width = "1dip"
      android :color = "#FFF" />
   <padding
      android :bottom = "2dp"
      android :left = "2dp"
      android :right = "2dp"
      android :top = "2dp" />
</shape>

Bước 5 - Thêm mã sau vào AndroidManifest.xml