国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android 給應(yīng)用程序的icon添加未讀消息個數(shù)提示(紅圈內(nèi)數(shù)字)

2019-12-12 03:08:37
字體:
供稿:網(wǎng)友

最近在做一個可以查看未讀消息的功能,需要在界面中的Tab頁的標(biāo)簽icon的右上角添加一個未讀消息提示的功能。

先上個效果圖出來,比較直觀明白需求:

思路上似乎有兩種:

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

 2. 采用canvas畫出圓和數(shù)字。

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

直接上代碼:

/**   * 繪制圖標(biāo)右上角的未讀消息數(shù)量顯示   *   * @param context   *   上下文   * @param icon   *   需要被添加的icon的資源ID   * @param news   *   未讀的消息數(shù)量   * @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進(jìn)行濾波處理   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);   // 啟用抗鋸齒和使用設(shè)備的文本字距   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);  } 

調(diào)用語句:

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

注:

1.count是未讀消息的數(shù)量。

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

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持武林網(wǎng)!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 池州市| 黎川县| 图木舒克市| 舟山市| 东丰县| 石林| 澄城县| 宁海县| 阿坝| 高雄县| 商洛市| 涿州市| 仲巴县| 新沂市| 合阳县| 门源| 渝北区| 延安市| 莒南县| 津南区| 宁津县| 博白县| 惠水县| 扬州市| 衢州市| 昌乐县| 新郑市| 满洲里市| 溧阳市| 容城县| 安宁市| 肇东市| 故城县| 钦州市| 阿坝| 成安县| 商城县| 太保市| 滦南县| 张家口市| 太湖县|