下面这种效果:
Badge 用法很简但 见下面的demo:
/**
* Created by Fangchao on 2015/2/25.
*/
@EActivity(R.layout.activity_usercenter)
public class UserCenterActivity extends BaseActionBarActivity implements DataHelper.DataListener {
@ViewById(R.id.person_detail_headImage)
CircleImageView headImageV;// 头像
@ViewById(R.id.person_detail_name)
TextView nameV;// 会员账户
@ViewById(R.id.person_detail_level)
ImageView levelV;
@ViewById(R.id.person_detail_price)
TextView priceV;// 账户余额
@ViewById(R.id.person_detail_paycount)
Button payCountV;// 待付款
@ViewById(R.id.person_detail_noReceipt)
Button noReceiptV;// 待收货
@ViewById(R.id.person_detail_eaid)
Button eaidV;// 待评价
BadgeView payCountBadge;// 待付款 数量
BadgeView noReceiptBadge;// 待收货 数量
BadgeView eaidBadge;// 待评价 数量
// 数据
DataHelper mDataHelper;
@AfterViews
void initview() {
initdata();
}
@Click({R.id.person_detail_exit})
void click(View view) {
switch (view.getId()) {
case R.id.person_detail_exit:
SharedPreferencesUtils.getInstance().cleanUserMessage();
setResult(RESULT_OK);
finish();
break;
}
}
private void initdata() {
UserBean bean = SharedPreferencesUtils.getInstance().getUserMessage();
// 赋值
ImageLoader mImageLoader = new ImageLoader(MyApplication.getInstance()
.getRequestQueue(), BitmapCache.getInstance());
// 给view设置值
headImageV.setDefaultImageResId(R.drawable.ic_logo);
headImageV.setErrorImageResId(R.drawable.ic_logo);
headImageV.setImageUrl(bean.getImageUrl(), mImageLoader);
nameV.setText(bean.getAccount());
// 等级赋值
if ("1".equals(bean.getLevel())) {
levelV.setImageResource(R.drawable.ready_bojin);
} else if ("2".equals(bean.getLevel())) {
levelV.setImageResource(R.drawable.ready_bojin);
} else if ("3".equals(bean.getLevel())) {
levelV.setImageResource(R.drawable.ready_bojin);
} else if ("4".equals(bean.getLevel())) {
levelV.setImageResource(R.drawable.ready_bojin);
}
priceV.setText("余额:" + PriceTools.formatStr(bean.getPrice()));
// 数字动画
TranslateAnimation anim = new TranslateAnimation(-100, 0, 0, 0);
anim.setInterpolator(new BounceInterpolator());
anim.setDuration(1000);
// 避免反复添加数字view覆盖问题所以加此判断
try {
if (Integer.parseInt(bean.getPaycount().trim()) != 0) {
if (payCountBadge != null) {
payCountBadge.setText(bean.getPaycount());
} else {
payCountBadge = getBadgeV(payCountV, bean.getPaycount());
payCountBadge.show(anim);
}
}
if (Integer.parseInt(bean.getNoReceipt().trim()) != 0) {
if (noReceiptBadge != null && bean.getNoReceipt().trim() != "0") {
noReceiptBadge.setText(bean.getNoReceipt());
} else {
noReceiptBadge = getBadgeV(noReceiptV, bean.getNoReceipt());
noReceiptBadge.show(anim);
}
}
if (Integer.parseInt(bean.getEaid().trim()) != 0) {
if (eaidBadge != null) {
eaidBadge.setText(bean.getEaid());
} else {
eaidBadge = getBadgeV(eaidV, bean.getEaid());
eaidBadge.show(anim);
}
}
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
@Override
public void onResume() {
super.onResume();
initDataWithNetWork();
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mDataHelper != null)
mDataHelper.cancel();
}
/**
* 获取用户信息通过网络
*/
private void initDataWithNetWork() {
if (SharedPreferencesUtils.getInstance().isLogin()) {
mDataHelper = new PostDataHelper(URLHelper.getURL(
URLHelper.MODULE_ACCOUNT, URLHelper.M_GETMEMBERINFO),
URLHelper.getBaseParams(URLHelper.M_GETMEMBERINFO), this, 0);
mDataHelper.execute();
}
}
/**
* 获取数字view
*
* @param v
* @param str
* @return
*/
private BadgeView getBadgeV(View v, String str) {
BadgeView mBadgeView = new BadgeView(this, v);
mBadgeView.setText(str);
mBadgeView.setBadgeMargin(10, 0);
mBadgeView.setBadgeBackgroundColor(Color.parseColor("#E5004A"));//设置badgeview的背景色
return mBadgeView;
}
@Override
public void sucess(JSONObject response, int code) {
switch (code) {
case 0:
if (!UserCenterActivity.this.isFinishing()) {
ResultSingleBean rb = (ResultSingleBean) VolleyResponseHelper
.jsonToBean(response, 4);
if (rb.getRetCode() == 0) {
// 登陆成功
UserBean bean = (UserBean) rb.getRetObj();
SharedPreferencesUtils.getInstance().editUserMessage(bean);
initdata();
} else {
CustomToast.showToast(rb.getRetMessage(), this);
}
}
break;
default:
break;
}
}
@Override
public void err(String error, int code) {
CustomToast.showToast(error, this);
}
}
代码跳着看就行,懒得往外摘了
BadgeView 类下载:
算了不用下了,还麻烦,就一个类:复制过去用就行了:
package com.readystatesoftware.viewbadger;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.Typeface;
import android.graphics.drawable.ShapeDrawable;
import android.graphics.drawable.shapes.RoundRectShape;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;