/* * Copyright (c) 2015 Zhang Hai <Dreaming.in.Code.ZH@Gmail.com> * All Rights Reserved. */ package me.zhanghai.android.douya.ui; import android.app.Activity; import android.content.Context; import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; import android.support.v4.content.ContextCompat; import android.support.v4.view.ViewCompat; import android.text.TextUtils; import android.view.MenuItem; import android.view.View; import android.view.Window; import android.widget.ImageView; import android.widget.TextView; import butterknife.ButterKnife; import me.zhanghai.android.douya.R; import me.zhanghai.android.douya.util.CheatSheetUtils; import me.zhanghai.android.douya.util.ViewUtils; public class ActionItemBadge { public static void setup(final MenuItem menuItem, Drawable icon, int count, final Activity activity) { View actionView = menuItem.getActionView(); actionView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { activity.onMenuItemSelected(Window.FEATURE_OPTIONS_PANEL, menuItem); } }); CharSequence title = menuItem.getTitle(); if (!TextUtils.isEmpty(title)) { CheatSheetUtils.setup(actionView, title); } ImageView iconImage = ButterKnife.findById(actionView, R.id.icon); iconImage.setImageDrawable(icon); TextView badgeText = ButterKnife.findById(actionView, R.id.badge); Context themedContext = badgeText.getContext(); ViewCompat.setBackground(badgeText, new BadgeDrawable(themedContext)); badgeText.setTextColor(ViewUtils.getColorFromAttrRes(R.attr.colorPrimary, 0, themedContext)); update(badgeText, count); } public static void setup(MenuItem menuItem, int iconResId, int count, Activity activity) { setup(menuItem, ContextCompat.getDrawable(activity, iconResId), count, activity); } private static void update(TextView badgeText, int count) { badgeText.setText(String.valueOf(count)); ViewUtils.setVisibleOrGone(badgeText, count != 0); } public static void update(MenuItem menuItem, int count) { update(ButterKnife.<TextView>findById(menuItem.getActionView(), R.id.badge), count); } private static class BadgeDrawable extends GradientDrawable { public BadgeDrawable(Context context) { setColor(ViewUtils.getColorFromAttrRes(R.attr.colorControlNormal, 0, context)); } @Override public void setBounds(int left, int top, int right, int bottom) { super.setBounds(left, top, right, bottom); setCornerRadius(Math.min(right - left, bottom - top)); } } }