Android message prompt class viewbadger

Source: Internet
Author: User

Viewbadger In the Android message prompt class. The effect is as follows:


The Code is as follows:

BadgeView. java

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; import android. view. V IewGroup. layoutParams; import android. view. viewParent; import android. view. animation. accelerateInterpolator; import android. view. animation. alphaAnimation; import android. view. animation. animation; import android. view. animation. decelerateInterpolator; import android. widget. frameLayout; import android. widget. tabWidget; import android. widget. textView;/*** A simple text label view that can be applied as a "ba Dge "to any given {@ link android. view. view }. * This class is intended to be instantiated at runtime rather than encoded ded in XML layouts. ** @ author Jeff Gilfelt */public class BadgeView extends TextView {public static final int POSITION_TOP_LEFT = 1; public static final int POSITION_TOP_RIGHT = 2; public static final int POSITION_BOTTOM_LEFT = 3; public static final int POSITION_BOTTOM_RIGHT = 4; pub Lic static final int POSITION_CENTER = 5; private static final int DEFAULT_MARGIN_DIP = 10; private static final int finished = 8; private static final int finished = 10; private static final int DEFAULT_POSITION = POSITION_TOP_RIGHT; private static final int DEFAULT_BADGE_COLOR = Color. parseColor ("# CCFF0000"); // Color. RED; private static final int DEFAULT_TEXT_COLOR = Col Or. WHITE; private static Animation fadeIn; private static Animation fadeOut; private Context context; private View target; private int badgePosition; private int badgeMarginH; private int badgeMarginV; private int badgeColor; private boolean isShown; private ShapeDrawable badgeBg; private int targetTabIndex; public BadgeView (Context context) {this (context, (AttributeSet) null, android. r. attr. textViewStyle);} p Ublic BadgeView (Context context, AttributeSet attrs) {this (context, attrs, android. r. attr. textViewStyle);}/*** Constructor-** create a new BadgeView instance attached to a target {@ link android. view. view }. ** @ param context for this view. * @ param target the View to attach the badge. */public BadgeView (Context context, View target) {this (context, null, android. r. attr. textViewStyl E, target, 0);}/*** Constructor-** create a new BadgeView instance attached to a target {@ link android. widget. tabWidget} * tab at a given index. ** @ param context for this view. * @ param target the TabWidget to attach the badge. * @ param index the position of the tab within the target. */public BadgeView (Context context, TabWidget target, int index) {this (context, null, android. r. a Ttr. textViewStyle, target, index);} public BadgeView (Context context, AttributeSet attrs, int defStyle) {this (context, attrs, defStyle, null, 0 );} public BadgeView (Context context, AttributeSet attrs, int defStyle, View target, int tabIndex) {super (context, attrs, defStyle); init (context, target, tabIndex );} private void init (Context context, View target, int tabIndex) {this. context = context+this.tar Get = targetdomainthis.tar getTabIndex = tabIndex; // apply defaultsbadgePosition = DEFAULT_POSITION; badgeMarginH = dipToPixels (optional); badgeMarginV = badgeMarginH; badgeColor = regular; setTypeface (Typeface. DEFAULT_BOLD); int paddingPixels = dipToPixels (bytes); setPadding (paddingPixels, 0, paddingPixels, 0); setTextColor (DEFAULT_TEXT_COLOR); setTextSize (18366f); fadeIn = New AlphaAnimation (0, 1); fadeIn. setInterpolator (new DecelerateInterpolator (); fadeIn. setDuration (200); fadeOut = new AlphaAnimation (1, 0); fadeOut. setInterpolator (new AccelerateInterpolator (); fadeOut. setDuration (200); isShown = false; if (this.tar get! = Null) define applyto(this.tar get);} else {show () ;}} private void applyTo (View target) {LayoutParams lp = target. getLayoutParams (); ViewParent parent = target. getParent (); FrameLayout container = new FrameLayout (context); if (target instanceof TabWidget) {// set target to the relevant tab child containertarget = (TabWidget) Quit get = target; (ViewGroup) target). AddView (container, new LayoutParams (LayoutParams. FILL_PARENT, LayoutParams. FILL_PARENT); this. setVisibility (View. GONE); container. addView (this);} else {// TODO verify that parent is indeed a ViewGroupViewGroup group = (ViewGroup) parent; int index = group. indexOfChild (target); group. removeView (target); group. addView (container, index, lp); container. addView (target); this. setVisibility (View. GONE); contai Ner. addView (this); group. invalidate () ;}}/*** Make the badge visible in the UI. **/public void show () {show (false, null);}/*** Make the badge visible in the UI. ** @ param animate flag to apply the default fade-in animation. */public void show (boolean animate) {show (animate, fadeIn);}/*** Make the badge visible in the UI. ** @ param anim Animation to apply to the view when made visible. */public Void show (Animation anim) {show (true, anim);}/*** Make the badge non-visible in the UI. **/public void hide () {hide (false, null);}/*** Make the badge non-visible in the UI. ** @ param animate flag to apply the default fade-out animation. */public void hide (boolean animate) {hide (animate, fadeOut);}/*** Make the badge non-visible in the UI. ** @ param anim Animation to apply to the view when m Ade non-visible. */public void hide (Animation anim) {hide (true, anim);}/*** Toggle the badge visibility in the UI. **/public void toggle () {toggle (false, null, null);}/*** Toggle the badge visibility in the UI. ** @ param animate flag to apply the default fade-in/out animation. */public void toggle (boolean animate) {toggle (animate, fadeIn, fadeOut);}/*** Toggle the badge visibility in the UI. ** @ Param animIn Animation to apply to the view when made visible. * @ param animOut Animation to apply to the view when made non-visible. */public void toggle (Animation animIn, Animation animOut) {toggle (true, animIn, animOut);} private void show (boolean animate, Animation anim) {if (getBackground () = null) {if (badgeBg = null) {badgeBg = getDefaultBackground ();} setBackgroundDrawable (badgeBg);} PplyLayoutParams (); if (animate) {this. startAnimation (anim);} this. setVisibility (View. VISIBLE); isShown = true;} private void hide (boolean animate, Animation anim) {this. setVisibility (View. GONE); if (animate) {this. startAnimation (anim);} isShown = false;} private void toggle (boolean animate, Animation animIn, Animation animOut) {if (isShown) {hide (animate & (animOut! = Null), animOut);} else {show (animate & (animIn! = Null), animIn) ;}}/*** Increment the numeric badge label. if the current badge label cannot be converted to * an integer value, its label will be set to "0 ". ** @ param offset the increment offset. */public int increment (int offset) {CharSequence txt = getText (); int I; if (txt! = Null) {try {I = Integer. parseInt (txt. toString ();} catch (NumberFormatException e) {I = 0 ;}} else {I = 0 ;} I = I + offset; setText (String. valueOf (I); return I;}/*** Decrement the numeric badge label. if the current badge label cannot be converted to * an integer value, its label will be set to "0 ". ** @ param offset the decrement offset. */public int decrement (int offset) {return increment (-offset );} Private ShapeDrawable getDefaultBackground () {int r = dipToPixels (DEFAULT_CORNER_RADIUS_DIP); float [] outerR = new float [] {r, r, r, r}; RoundRectShape rr = new RoundRectShape (outerR, null, null); ShapeDrawable drawable = new ShapeDrawable (rr); drawable. getPaint (). setColor (badgeColor); return drawable;} private void applyLayoutParams () {FrameLayout. layoutParams lp = new FrameLayout. layou TParams (LayoutParams. WRAP_CONTENT, LayoutParams. WRAP_CONTENT); switch (badgePosition) {case POSITION_TOP_LEFT: lp. gravity = Gravity. LEFT | Gravity. TOP; lp. setMargins (badgeMarginH, badgeMarginV, 0, 0); break; case POSITION_TOP_RIGHT: lp. gravity = Gravity. RIGHT | Gravity. TOP; lp. setMargins (0, badgeMarginV, badgeMarginH, 0); break; case POSITION_BOTTOM_LEFT: lp. gravity = Gravity. LEFT | Gravity. BOTTOM; lp. setMar Gins (badgeMarginH, 0, 0, badgeMarginV); break; case POSITION_BOTTOM_RIGHT: lp. gravity = Gravity. RIGHT | Gravity. BOTTOM; lp. setMargins (0, 0, badgeMarginH, badgeMarginV); break; case POSITION_CENTER: lp. gravity = Gravity. CENTER; lp. setMargins (0, 0, 0, 0); break; default: break;} setLayoutParams (lp);}/*** Returns the target View this badge has been attached. **/public View getTarget () {return target ;}/*** Is this badge currently visible in the UI? **/@ Overridepublic boolean isShown () {return isShown;}/*** Returns the positioning of this badge. ** one of POSITION_TOP_LEFT, POSITION_TOP_RIGHT, POSITION_BOTTOM_LEFT, POSITION_BOTTOM_RIGHT, POSTION_CENTER. **/public int getBadgePosition () {return badgePosition;}/*** Set the positioning of this badge. ** @ param layoutPosition one of POSITION_TOP_LEFT, POSITION_TOP_RIGHT, POSITION_BOTTOM_LEFT, POSITION_BOTTOM_RIGHT, POSTION_CENTER. **/public void setBadgePosition (int layoutPosition) {this. badgePosition = layoutPosition;}/*** Returns the horizontal margin from the target View that is applied to this badge. **/public int getHorizontalBadgeMargin () {return badgeMarginH;}/*** Returns the vertical margin from the target View that is applied to this badge. **/public int getVerticalBadgeMargin () {return badgeMarginV;}/*** Set the horizontal/vertical margin from the target View that is applied to this badge. ** @ param badgeMargin the margin in pixels. */public void setBadgeMargin (int badgeMargin) {this. badgeMarginH = badgeMargin; this. badgeMarginV = badgeMargin;}/*** Set the horizontal/vertical margin from the target View that is applied to this badge. ** @ param horizontal margin in pixels. * @ param vertical margin in pixels. */public void setBadgeMargin (int horizontal, int vertical) {this. badgeMarginH = horizontal; this. badgeMarginV = vertical;}/*** Returns the color value of the badge background. **/public int getBadgeBackgroundColor () {return badgeColor;}/*** Set the color value of the badge background. ** @ param badgeColor the badge background color. */public void setBadgeBackgroundColor (int badgeColor) {this. badgeColor = badgeColor; badgeBg = getDefaultBackground ();} // general method for converting px using dip/function private int dipToPixels (int dip) {Resources r = getResources (); float px = TypedValue. applyDimension (TypedValue. COMPLEX_UNIT_DIP, dip, r. getDisplayMetrics (); return (int) px ;}}

Usage:

RelativeLayout dh = (RelativeLayout) view. findViewById (R. id. dh); BadgeView badge = new BadgeView (context, dh); badge. setText ("1"); // disappears with the actual badge. show (); // badge. toggle ();

Code from github's open source project https://github.com/jgilfelt/android-viewbadger

Collect it by yourself!

Record and share, let you grow together! Welcome to my other blog; my blog address: http://blog.csdn.net/caicongyang


Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.