BadgeView的使用

使用github上的一个jar包,叫做BadgeView。

首先下载badgeview下载




使用方法一:

将badgeview.jar加入到所创建的android工程的libs文件夹下,右键点击builder path --> add to build path即可。

使用方法二:

将BadgeView导入eclipse,作为库文件(isLibrary),即可。


下面以一个例子来说明该jar包的实际用法:

github上的代码说明是:

<span style="font-family:Microsoft YaHei;">BadgeView badge = new BadgeView(getActivity());
badge.setTargetView(myView);
badge.setBadgeCount(42);</span>

本例用一个listView模拟qq消息页收到的消息,在每条消息右侧用红色圆点来显示收到的消息数目。当点击过消息,跳入到消息页面,再次返回时,该消息已被查看过,右侧红色圆点消失。

主要代码:

public class MainActivity extends ActionBarActivity {
	private ListView listView;
	private String[] datas = new Cheeses().sCheeseStrings;
	private MyAdapter adapter;
	private int[] tags = new int[datas.length];// 默认为0,标记为1代表已经点过

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		listView = (ListView) findViewById(R.id.lv_list);
		adapter = new MyAdapter();
		listView.setAdapter(adapter);
	}

	@Override
	protected void onResume() {
		super.onResume();
		adapter.notifyDataSetChanged();

	}

	public class MyAdapter extends BaseAdapter {
		ViewHolder holder = null;

		@Override
		public int getCount() {
			// TODO Auto-generated method stub
			return datas.length;
		}

		@Override
		public Object getItem(int position) {
			// TODO Auto-generated method stub
			return position;
		}

		@Override
		public long getItemId(int position) {
			// TODO Auto-generated method stub
			return position;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			if (convertView == null) {
				convertView = getLayoutInflater().from(MainActivity.this)
						.inflate(R.layout.item_list, null);
				holder = new ViewHolder();
				holder.tv = (TextView) convertView.findViewById(R.id.tv_text);
				<strong>holder.badgeView = new BadgeView(MainActivity.this);
				holder.badgeView.setTargetView(holder.tv);
				holder.badgeView.setGravity(Gravity.RIGHT | Gravity.TOP);</strong>
				convertView.setTag(holder);
			} else {
				holder = (ViewHolder) convertView.getTag();
			}
			holder.tv.setText(datas[position]);

			holder.badgeView.setBadgeCount(datas[position].length());
			if (tags[position] == 1) {
				<strong>holder.badgeView.setVisibility(View.GONE);</strong>
			}
			convertView.setOnClickListener(new MyOnClickListener(position,
					MainActivity.this));
			return convertView;
		}

		class ViewHolder {
			TextView tv;
			BadgeView badgeView;
		}

		class MyOnClickListener implements View.OnClickListener {
			Context context;
			int position;

			public MyOnClickListener(int position, Context context) {
				this.position = position;
				this.context = context;
			}

			@Override
			public void onClick(View v) {
				tags[position] = 1;// 标记已点击
				// 跳转到消息界面
				Intent intent = new Intent(MainActivity.this,
						MessageActivity.class);
				startActivity(intent);
			}

		}
	}

}

用tags[]数组来标记每一条是否点击过是一个不错的方法来防止listview条目重绘时出现的红色圆圈显示错乱的现象。

除了例子中队badgeview的使用,还有其他代码功能:

 counterBadge.incrementBadgeCount(1);//设置增加的消息数目,即在原基础上加上设置的数目

 textStyleBadge.setTypeface(Typeface.create(Typeface.SANS_SERIF, Typeface.ITALIC));//设置样式
 
textStyleBadge.setShadowLayer(2, -1, -1, Color.GREEN);//设置阴影

 backgroundShapeBadge.setBackground(12, Color.parseColor("#9b2eef"));//设置背景

 backgroundDrawableBadge.setBackgroundResource(R.drawable.badge_blue);//设置背景

等等。。。


运行效果


点击每一条后:


返回后:




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子林Android

感谢老板,老板大气!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值