Android中未读信息提示图标的实现

本文介绍了在Android应用中如何实现类似微信未读信息提示的功能,特别是在Launcher的主界面上,展示联系人图标上的未读消息数。通过查询sms/mms数据库获取未读条数,并展示了简单的实现代码及运行效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Android APP的实现中,经常看到 一些信息的提示,比如在微信的未读条数,信息的未读条数。


其中信息的未读条数,一般在Launcher的WorkSpace主界面上,会在SMS/MMS图标上显示一个未读数量的图标。

关于SMS/MMS未读短信的条数,可以通过Resovler查询sms/mms数据库得到,本文模拟一个在contacts图标上叠加一个未读图标的实现。

代码很简单,大致如下:


package com.example.unreadimageview;

import android.support.v7.app.ActionBarActivity;
import android.text.style.BackgroundColorSpan;
import android.util.Log;
import android.R.integer;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.webkit.WebStorage.Origin;
import android.widget.ImageView;


public class MainActivity extends ActionBarActivity {
	private ImageView iv = null;
	Drawable background = null;
	Bitmap orign = null;
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        iv = (ImageView) findViewById(R.id.iv);
        background = getResources().getDrawable(R.drawable.unread_info_background);
        orign = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher_contacts);
        
        initialize();
    }

	private void initialize() {
		String finalText = String.valueOf(2);
		int textsize = 40;
		Paint paint = new Paint();
		paint.setAntiAlias(true);
        paint.setColor(Color.WHITE);
        paint.setTextSize(textsize);
        
        
        /**/
        int bgWidth = background.getIntrinsicWidth();
        int bgHeight = background.getIntrinsicHeight();

        Rect textBounds = new Rect();
        paint.getTextBounds(finalText, 0, finalText.length(), textBounds);

        int textHeight = textBounds.height();
        int textWidth = (int) paint.measureText(finalText, 0, finalText.length());
        int circleHeight = (int) (bgHeight * 0.71);
        /**/
        
		Canvas canvas = new Canvas();
		
		Bitmap bitmap = Bitmap.createBitmap(bgWidth, bgHeight, Bitmap.Config.ARGB_8888);
		canvas.setBitmap(bitmap);
		background.setBounds(0, 0, bgWidth, bgHeight);
		background.draw(canvas); 
		
		int x = (bgWidth - textWidth) / 2;
		int y = (circleHeight + 1 ) - (circleHeight - textHeight) / 2;
		canvas.drawText(finalText, x, y, paint);
		
		Bitmap bitmap2 = orign.copy(Bitmap.Config.ARGB_8888,true);
		canvas.setBitmap(bitmap2);
		canvas.drawBitmap(bitmap, 0, 0, null);
		
		iv.setImageBitmap(bitmap2);
		
		
		
	}


    
}

其中的一些背景图片,请自己到Android源代码中拷贝。

其运行效果如下:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值