Viewbadger
1.BadgeView主要是继承了TextView,所以实际上就是一个TextView,底层放了一个label,可以自定义背景图,自定义背景颜色,是否显示,显示进入的动画效果以及显示的位置等等
2.BadgeView是一个GitHub开源的项目,下载地址是:https://github.com/jgilfelt/android-viewbadger
3.这个开源项目引用的方法很简单把android-viewbadger.jar引入到项目中就可以直接使用了,它提供的Demo已经很直接把用法都写出来了,用起来很方便的,对TabHost提供了特殊的支持。
下面是提供的Demo中使用图片:
4.demo中对应的效果代码这些一看就明白了:
1 public class DemoActivity extends TabActivity { 2 3 private static final String[] DATA = Cheeses.sCheeseStrings; 4 5 Button btnPosition; 6 Button btnColour; 7 Button btnAnim1; 8 Button btnAnim2; 9 Button btnCustom; 10 Button btnClick; 11 Button btnTab; 12 Button btnIncrement; 13 14 ListView listDemo; 15 16 BadgeView badge1; 17 BadgeView badge2; 18 BadgeView badge3; 19 BadgeView badge4; 20 BadgeView badge5; 21 BadgeView badge6; 22 BadgeView badge7; 23 BadgeView badge8; 24 25 @Override 26 public void onCreate(Bundle savedInstanceState) { 27 super.onCreate(savedInstanceState); 28 setContentView(R.layout.main); 29 30 final TabHost tabHost = getTabHost(); 31 32 tabHost.addTab(tabHost.newTabSpec("demos") 33 .setIndicator("Badge Demos") 34 .setContent(R.id.tab1)); 35 36 tabHost.addTab(tabHost.newTabSpec("adapter") 37 .setIndicator("List Adapter") 38 .setContent(R.id.tab2)); 39 40 tabHost.addTab(tabHost.newTabSpec("tests") 41 .setIndicator("Layout Tests") 42 .setContent(R.id.tab3)); 43 44 // *** default badge *** 45 46 View target = findViewById(R.id.default_target); 47 BadgeView badge = new BadgeView(this, target); 48 badge.setText("1"); 49 badge.show(); 50 51 // *** set position *** 52 53 btnPosition = (Button) findViewById(R.id.position_target); 54 badge1 = new BadgeView(this, btnPosition); 55 badge1.setText("12"); 56 badge1.setBadgePosition(BadgeView.POSITION_CENTER); 57 btnPosition.setOnClickListener(new OnClickListener() { 58 @Override 59 public void onClick(View v) { 60 badge1.toggle(); 61 } 62 }); 63 64 // *** badge/text size & colour *** 65 66 btnColour = (Button) findViewById(R.id.colour_target); 67 badge2 = new BadgeView(this, btnColour); 68 badge2.setText("New!"); 69 badge2.setTextColor(Color.BLUE); 70 badge2.setBadgeBackgroundColor(Color.YELLOW); 71 badge2.setTextSize(12); 72 btnColour.setOnClickListener(new OnClickListener() { 73 @Override 74 public void onClick(View v) { 75 badge2.toggle(); 76 } 77 }); 78 79 // *** default animation *** 80 81 btnAnim1 = (Button) findViewById(R.id.anim1_target); 82 badge3 = new BadgeView(this, btnAnim1); 83 badge3.setText("84"); 84 btnAnim1.setOnClickListener(new OnClickListener() { 85 @Override 86 public void onClick(View v) { 87 badge3.toggle(true); 88 } 89 }); 90 91 // *** custom animation *** 92 93 btnAnim2 = (Button) findViewById(R.id.anim2_target); 94 badge4 = new BadgeView(this, btnAnim2); 95 badge4.setText("123"); 96 badge4.setBadgePosition(BadgeView.POSITION_TOP_LEFT); 97 badge4.setBadgeMargin(15, 10); 98 badge4.setBadgeBackgroundColor(Color.parseColor("#A4C639")); 99 btnAnim2.setOnClickListener(new OnClickListener() { 100 @Override 101 public void onClick(View v) { 102 TranslateAnimation anim = new TranslateAnimation(-100, 0, 0, 0); 103 anim.setInterpolator(new BounceInterpolator()); 104 anim.setDuration(5000); 105 badge4.toggle(anim, null); 106 } 107 }); 108 109 // *** custom background *** 110 111 btnCustom = (Button) findViewById(R.id.custom_target); 112 badge5 = new BadgeView(this, btnCustom); 113 badge5.setText("37"); 114 badge5.setBackgroundResource(R.drawable.badge_ifaux); 115 badge5.setTextSize(16); 116 btnCustom.setOnClickListener(new OnClickListener() { 117 @Override 118 public void onClick(View v) { 119 badge5.toggle(true); 120 } 121 }); 122 123 // *** clickable badge *** 124 125 btnClick = (Button) findViewById(R.id.click_target); 126 badge6 = new BadgeView(this, btnClick); 127 badge6.setText("click me"); 128 badge6.setBadgeBackgroundColor(Color.BLUE); 129 badge6.setTextSize(16); 130 badge6.setOnClickListener(new OnClickListener() { 131 @Override 132 public void onClick(View v) { 133 Toast.makeText(DemoActivity.this, "clicked badge", Toast.LENGTH_SHORT).show(); 134 } 135 }); 136 btnClick.setOnClickListener(new OnClickListener() { 137 @Override 138 public void onClick(View v) { 139 badge6.toggle(); 140 } 141 }); 142 143 // *** tab *** 144 145 TabWidget tabs = (TabWidget) findViewById(android.R.id.tabs); 146 147 btnTab = (Button) findViewById(R.id.tab_btn); 148 badge7 = new BadgeView(this, tabs, 0); 149 badge7.setText("5"); 150 btnTab.setOnClickListener(new OnClickListener() { 151 @Override 152 public void onClick(View v) { 153 badge7.toggle(); 154 } 155 }); 156 157 // *** increment *** 158 159 btnIncrement = (Button) findViewById(R.id.increment_target); 160 badge8 = new BadgeView(this, btnIncrement); 161 badge8.setText("0"); 162 btnIncrement.setOnClickListener(new OnClickListener() { 163 @Override 164 public void onClick(View v) { 165 if (badge8.isShown()) { 166 badge8.increment(1); 167 } else { 168 badge8.show(); 169 } 170 } 171 }); 172 173 // *** list adapter **** 174 175 listDemo = (ListView) findViewById(R.id.tab2); 176 listDemo.setAdapter(new BadgeAdapter(this)); 177 178 } 179 180 @Override 181 protected void onResume() { 182 super.onResume(); 183 184 BadgeView badge; 185 View target; 186 187 // *** test linear layout container *** 188 189 target = findViewById(R.id.linear_target); 190 badge = new BadgeView(this, target); 191 badge.setText("OK"); 192 badge.show(); 193 194 // *** test relative layout container *** 195 196 target = findViewById(R.id.relative_target); 197 badge = new BadgeView(this, target); 198 badge.setText("OK"); 199 badge.show(); 200 201 // *** test frame layout container *** 202 203 target = findViewById(R.id.frame_target); 204 badge = new BadgeView(this, target); 205 badge.setText("OK"); 206 badge.show(); 207 208 // *** test table layout container *** 209 210 target = findViewById(R.id.table_target); 211 badge = new BadgeView(this, target); 212 badge.setText("OK"); 213 badge.show(); 214 215 // *** test linear layout *** 216 217 target = findViewById(R.id.linear_group_target); 218 badge = new BadgeView(this, target); 219 badge.setText("OK"); 220 badge.show(); 221 222 // *** test relative layout *** 223 224 target = findViewById(R.id.relative_group_target); 225 badge = new BadgeView(this, target); 226 badge.setText("OK"); 227 badge.show(); 228 229 // *** test frame layout *** 230 231 target = findViewById(R.id.frame_group_target); 232 badge = new BadgeView(this, target); 233 badge.setText("OK"); 234 badge.show(); 235 236 // *** test table layout *** 237 238 target = findViewById(R.id.tablerow_group_target); 239 badge = new BadgeView(this, target); 240 badge.setText("OK"); 241 badge.show(); 242 243 } 244 245 private static class BadgeAdapter extends BaseAdapter { 246 private LayoutInflater mInflater; 247 private Context mContext; 248 private static final int droidGreen = Color.parseColor("#A4C639"); 249 250 public BadgeAdapter(Context context) { 251 mInflater = LayoutInflater.from(context); 252 mContext = context; 253 } 254 255 public int getCount() { 256 return DATA.length; 257 } 258 259 public Object getItem(int position) { 260 return position; 261 } 262 263 public long getItemId(int position) { 264 return position; 265 } 266 267 public View getView(int position, View convertView, ViewGroup parent) { 268 ViewHolder holder; 269 270 if (convertView == null) { 271 convertView = mInflater.inflate(android.R.layout.simple_list_item_2, null); 272 holder = new ViewHolder(); 273 holder.text = (TextView) convertView.findViewById(android.R.id.text1); 274 holder.badge = new BadgeView(mContext, holder.text); 275 holder.badge.setBadgeBackgroundColor(droidGreen); 276 holder.badge.setTextColor(Color.BLACK); 277 convertView.setTag(holder); 278 } else { 279 holder = (ViewHolder) convertView.getTag(); 280 } 281 282 holder.text.setText(DATA[position]); 283 284 if (position % 3 == 0) { 285 holder.badge.setText(String.valueOf(position)); 286 holder.badge.show(); 287 } else { 288 holder.badge.hide(); 289 } 290 291 292 return convertView; 293 } 294 295 static class ViewHolder { 296 TextView text; 297 BadgeView badge; 298 } 299 } 300 301 }