最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2017年04月10日 15:24:44   作者:vaecer  
本文主要介紹了Android 給應(yīng)用程序的icon添加未讀消息個(gè)數(shù)提示(紅圈內(nèi)數(shù)字)的方法。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧

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

先上個(gè)效果圖出來(lái),比較直觀明白需求:

思路上似乎有兩種:

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

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

由于項(xiàng)目采用的是Tab頁(yè)的形式,其中的RadioButton不適合采用相對(duì)布局。故我采用了第二種方式。將繪制的過(guò)程寫(xiě)成了工具方法。在需要的時(shí)候調(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) { 
  // 初始化畫(huà)布 
  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);// 防抖動(dòng) 
  iconPaint.setFilterBitmap(true);// 用來(lái)對(duì)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)用語(yǔ)句:

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),如果不想在某個(gè)地方顯示,則設(shè)置為null。圖標(biāo)的寬高將會(huì)設(shè)置為固有寬高,既自動(dòng)通過(guò)getIntrinsicWidth和getIntrinsicHeight獲取。該方法是和在xml中設(shè)置 Android:drawableTop="@drawable/icon_mine"的效果一樣。

以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!

相關(guān)文章

最新評(píng)論

东安县| 新河县| 永泰县| 穆棱市| 紫云| 柳州市| 和硕县| 响水县| 仁怀市| 北流市| 韶山市| 贵溪市| 定南县| 新余市| 徐汇区| 阳原县| 司法| 疏勒县| 德庆县| 招远市| 射阳县| 台东市| 新宁县| 永修县| 曲麻莱县| 渝中区| 招远市| 呼图壁县| 城固县| 民权县| 噶尔县| 长沙县| 青铜峡市| 昌乐县| 威信县| 微山县| 平利县| 蚌埠市| 宜良县| 博野县| 福鼎市|