当前位置:操作系统 > 安卓/Android >>

android-数字提醒

 

我们在使用如短信类的软件是时会有未看短信数字的提醒,本人在论坛看到这个效果,就给大家分享一下:

 

 

 

 

最重要的是BadgeView这个重写TextView的类:

 

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.ViewGroup.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 "badge" to any given {@link android.view.View}. 

 * This class is intended to be instantiated at runtime rather than included 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; 

     

    private static final int DEFAULT_MARGIN_DIP = 5; 

    private static final int DEFAULT_LR_PADDING_DIP = 5; 

    private static final int DEFAULT_CORNER_RADIUS_DIP = 8; 

    private static final int DEFAULT_POSITION = POSITION_TOP_RIGHT; 

    private static final int DEFAULT_BADGE_COLOR = Color.RED; 

    private static final int DEFAULT_TEXT_COLOR = Color.WHITE; 

     

    private static Animation fadeIn; 

    private static Animation fadeOut; 

     

    private Context context; 

    private View target; 

     

    private int badgePosition; 

    private int badgeMargin; 

    private int badgeColor; 

     

    private boolean isShown; 

     

    private ShapeDrawable badgeBg; 

     

    private int targetTabIndex; 

     

    public BadgeView(Context context) { 

        this(context, (AttributeSet) null, android.R.attr.textViewStyle); 

    } 

     

    public 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 context for this view.

     * @param target the View to attach the badge to.

     */ 

    public BadgeView(Context context, View target) { 

         this(context, null, android.R.attr.textViewStyle, target, 0); 

    } 

     

    /**

     * Constructor -

     * 

     * create a new BadgeView instance attached to a target {@link android.widget.TabWidget}

     * tab at a given index.

     *

     * @param context context for this view.

     * @param target the TabWidget to attach the badge to.

     * @param index the position of the tab within the target.

     */ 

    public BadgeView(Context context, TabWidget target, int index) { 

        this(context, null, android.R.attr.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.target = target; 

        this.targetTabIndex = tabIndex; 

         

        // apply defaults 

        badgePosition = DEFAULT_POSITION; 

        badgeMargin = dipToPixels(DEFAULT_MARGIN_DIP); 

        badgeColor = DEFAULT_BADGE_COLOR; 

         

        setTypeface(Typeface.DEFAULT_BOLD); 

        int paddingPixels = dipToPixels(DEFAULT_LR_PADDING_DIP); 

        setPadding(paddingPixels, 0, paddingPixels, 0); 

        setTextColor(DEFAULT_TEXT_COLOR); 

         

        fadeIn = new AlphaAnimation(0, 1); 

        fadeIn.setInterpolator(new DecelerateIn

补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,