中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android 應用中怎么添加一個未讀消息提示功能

發布時間:2020-12-02 17:07:13 來源:億速云 閱讀:349 作者:Leah 欄目:移動開發

這篇文章將為大家詳細講解有關Android 應用中怎么添加一個未讀消息提示功能,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

思路上似乎有兩種:

 1. 直接把底圖和紅圓圈的圖片用相對布局進行排列,在代碼中動態更改紅圓中的TextView的數字,并且識別一下各種情況下紅圓的顯示或者隱藏。這種方法比較直觀。

 2. 采用canvas畫出圓和數字。

由于項目采用的是Tab頁的形式,其中的RadioButton不適合采用相對布局。故我采用了第二種方式。將繪制的過程寫成了工具方法。在需要的時候調用。便于以后的技術遷移。

直接上代碼:

/** 
  * 繪制圖標右上角的未讀消息數量顯示 
  * 
  * @param context 
  *   上下文 
  * @param icon 
  *   需要被添加的icon的資源ID 
  * @param news 
  *   未讀的消息數量 
  * @return drawable 
  */ 
 @SuppressWarnings("unused") 
 public static Drawable displayNewsNumber(Context context, int icon, int news) { 
  // 初始化畫布 
  int iconSize = (int) context.getResources().getDimension( 
    android.R.dimen.app_icon_size); 
  // Bitmap contactIcon = Bitmap.createBitmap(iconSize, iconSize, 
  // Config.ARGB_8888); 
  Bitmap iconBitmap = BitmapFactory.decodeResource( 
    context.getResources(), icon); 
  Canvas canvas = new Canvas(iconBitmap); 
  // 拷貝圖片 
  Paint iconPaint = new Paint(); 
  iconPaint.setDither(true);// 防抖動 
  iconPaint.setFilterBitmap(true);// 用來對Bitmap進行濾波處理 
  Rect src = new Rect(0, 0, iconBitmap.getWidth(), iconBitmap.getHeight()); 
  Rect dst = new Rect(0, 0, iconBitmap.getWidth(), iconBitmap.getHeight()); 
  canvas.drawBitmap(iconBitmap, src, dst, iconPaint); 
  // 啟用抗鋸齒和使用設備的文本字距 
  Paint countPaint = new Paint(Paint.ANTI_ALIAS_FLAG 
    | Paint.DEV_KERN_TEXT_FLAG); 
  countPaint.setColor(Color.RED); 
  canvas.drawCircle(iconSize - 13, 20, 10, countPaint); 

  Paint textPaint = new Paint(); 
  textPaint.setColor(Color.WHITE); 
  // textPaint.setTypeface(Typeface.DEFAULT_BOLD); 
  textPaint.setTextSize(19f); 
  canvas.drawText(String.valueOf(news), iconSize - 18, 27, textPaint); 
  return new BitmapDrawable(iconBitmap); 
 } 

調用語句:

if (count > 0) {//顯示右上角未讀消息提示 
   Drawable mineDrawable = BitmapUtil.displayNewsNumber(this, 
     R.drawable.icon_mine, count); 
   mineButton.setCompoundDrawablesWithIntrinsicBounds(null, null, 
     null, mineDrawable);//這里就是設置背景,自行發揮。 
  } else {//隱藏 
   Drawable defaultDrawable = getResources().getDrawable( 
     R.drawable.icon_mine); 
   mineButton.setCompoundDrawablesWithIntrinsicBounds(null, null, 
     null, defaultDrawable); 
  } 

注:

1.count是未讀消息的數量。

2.setCompoundDrawablesWithIntrinsicBounds(Drawable left, Drawable top, Drawable right, Drawable bottom)可以在上、下、左、右設置圖標,如果不想在某個地方顯示,則設置為null。圖標的寬高將會設置為固有寬高,既自動通過getIntrinsicWidth和getIntrinsicHeight獲取。該方法是和在xml中設置 Android:drawableTop="@drawable/icon_mine"的效果一樣。

關于Android 應用中怎么添加一個未讀消息提示功能就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

古蔺县| 宣恩县| 高陵县| 渭源县| 临江市| 黔西| 天峨县| 蚌埠市| 天镇县| 陕西省| 仙游县| 尼木县| 高密市| 通榆县| 乡城县| 台中市| 闸北区| 镇远县| 昂仁县| 广河县| 丰台区| 胶南市| 扶绥县| 嘉善县| 阳谷县| 文登市| 天长市| 勃利县| 无为县| 东港市| 奈曼旗| 曲沃县| 瓮安县| 漯河市| 巍山| 綦江县| 开封县| 抚顺市| 神池县| 揭阳市| 阜城县|