android实现在图标上显示数字

本文实例为大家分享了android实现在图标上显示数字的具体代码,供大家参考,具体内容如下

效果图:

动态显示当天的号数。

主要代码如下:

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Typeface;
import android.graphics.drawable.BitmapDrawable;
 
/**
 * 图片上画文字
 * 
 * @author qhg
 * @date 2014年3月5日
 * 
 */
 
public class QNotifacationIcon {
    /**
     * 在给定的图片上添加文字
     * 
     * @param context
     *            上下文对象
     * @param resId
     *            图片资源ID
     * @param text
     *            需要显示的文字
     * @param textSize
     *            文字大小
     * @param color
     *            文字颜色
     * @param typeface
     *            文字字体
     * @param offsetX
     *            文字x的偏移量
     * @param offsetY
     *            文字y的偏移量
     * @return 带文字的图片
     */
    public static Bitmap generatorContactIcon(Context context, int resId,
            String text, float textSize, int color, Typeface typeface,
            float offsetX, float offsetY) {
        // 根据id获取需要处理的图片
        Bitmap icon = ((BitmapDrawable) (context.getResources()
                .getDrawable(resId))).getBitmap();
        int iconWidth = icon.getWidth();
        int iconHeight = icon.getHeight();
        // 初始化画布
        Bitmap contactIcon = Bitmap.createBitmap(iconWidth, iconHeight,
                Config.ARGB_8888);
        // 构建
        Canvas canvas = new Canvas(contactIcon);
 
        // 创建画笔
        Paint paint = new Paint();
        // 设定是否使用图像抖动处理,会使绘制出来的图片颜色更加平滑和饱满,图像更加清晰
        paint.setDither(true);
        // 如果该项设置为true,则图像在动画进行中会滤掉对Bitmap图像的优化操作,加快显示
        // 速度,本设置项依赖于dither和xfermode的设置
        paint.setFilterBitmap(true);
 
        // 截取整个图片,从左上角到右下角
        Rect src = new Rect(0, 0, iconWidth, iconHeight);
        // 截取的图片放在画布上的位置
        Rect dst = new Rect(0, 0, iconWidth, iconHeight);
        canvas.drawBitmap(icon, src, dst, paint);
 
        // 抗锯齿和使用本身的文本字距
        Paint numPaint = new Paint(Paint.ANTI_ALIAS_FLAG
                | Paint.DEV_KERN_TEXT_FLAG);
        // 设置文字颜色
        numPaint.setColor(color);
        // 设置文字大小
        numPaint.setTextSize(textSize);
        // 设置文字字体
        numPaint.setTypeface(typeface);
 
        // 将文字内容画在图片上,x和y的坐标这里直接计算了文字在图片上的宽高偏移比例
        canvas.drawText(text, iconWidth * offsetX, iconHeight * offsetY,
                numPaint);
        return contactIcon;
    }
}

数字字体大小会随屏幕大小而不适应,可以根据屏幕宽度然后动态缩放字体比例。
调用方式:

// 动态在图片上画日期数字
((ImageView) convertView.findViewById(R.id.iv_leftImage))
    .setImageBitmap(QNotifacationIcon.generatorContactIcon(
    context, list_left_iamge_array[position],
    String.valueOf(new Date().getDate()), 30f, Color.GRAY,
    Typeface.DEFAULT_BOLD, 0.35f, 0.75f));

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android 桌面图标右上角显示未读消息数字

    背景: 在Android原生系统中,众所周知不支持桌面图标显示未读消息提醒的数字,虽然第三方控件BadgeView可以实现应用内的数字提醒.但对于系统的图标,特别是app的logo图标很难实现数字标志,即使是绘图的方式不断修改,但这种方式天生弊端,实用性很差.但幸运的是,一些强大的手机厂商(小米,三星,索尼)提供了私有的API,但也带来了难度,API的不同就意味着代码量的增加和兼容性问题更加突出. 现在我们来看看他们是如何实现的: 实现原理: 首先我们要明白 并不是应用本身处理对启动图标进行修改

  • android实现在图标上显示数字

    本文实例为大家分享了android实现在图标上显示数字的具体代码,供大家参考,具体内容如下 效果图: 动态显示当天的号数. 主要代码如下: import android.content.Context; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.Canvas; import android.graphics.Paint; import android

  • Android应用图标上的小红点Badge实践代码

    现在Android中有许多的应用仿苹果的在应用图标上显示小红点.当然有着一些手机ROM对小红点的支持,比如小米,三星等.google的api是没有提供这项工能的,这项功能一般都是厂商自己定制的,所以让开发者着实头痛,我也是弄了2天,不是所有的机型都可以.以后再一点点完善吧.希望对读文章的人,或也在受此困惑的人有点帮助! 效果图:(DODO那个是我的应用,小米miui8测试) 直接上代码吧,代码中有注释: 直接上代码吧,代码中有注释: BadgeUtil类: public class BadgeU

  • Android应用图标在状态栏上显示实现原理

    一.前方 在研究<Android类似360,QQ管家那样的悬浮窗>突发奇想,想把应用的图标也显示到状态栏上,类似手机QQ,而有消息来时改变状态栏上的图标显示. 二.原理 其实很研究完后,才发现,很简单: 2.1 显示图标在状态栏上 复制代码 代码如下: NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); Notification n = new Notifi

  • Android自定义SeekBar滑动显示数字

    先来上个效果图: 当滑动时:数值显示,滑动停止时显示数字,使用FrameLayout结合SeekBar. 首先我们看看. Layout: <?xml version="1.0" encoding="utf-8"?> <merge xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.c

  • Android使用Notification在状态栏上显示通知

    在使用手机时,当有未接来电或者是新短消息时,手机会给出相应的提示信息,这些提示信息通常会显示到手机屏幕的状态栏上.Android也提供了用于处理此类信息的类,他们是Notification和NotificationManager.其中,Notification代表的是具有全局效果的通知:而NotificationManager则是用于发送Notification通知的系统服务. 使用Notification和NotificationManager类发送和显示通知也比较简单,大致可分为以下4个步骤

  • Android 个人理财工具五:显示账单明细 上

    前面我们已经将每个月的收支明细存入到SQLite的数据表中,本文将实现从SQLite的数据表中取出这些数据显示为账单明细界面. 下图是最终的效果图: 在设计该界面时我考虑过好几个方案.本来准备使用一个gridview,因为觉得名字很像我需要的东西.可是后来查了一些资料,并且做了点实验,发现和我想象的有些差距.于是采用了目前这种方式.使用Listview. 这个界面布局实际上很简单,就是上面一个表头(Linearlayout),中间一个Listview,下面是一个脚注(Linearlayout).

  • Android实现标题上显示隐藏进度条效果

    一个界面,实现在向页面添加图片时,在标题上显示一个水平进度条,当图片载入完毕后,隐藏进度条并显示图片 具体实现方法: res/layout/main.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"

  • Android Studio用genymotion运行后小图标无法显示问题

    提出问题 我做的是一个通讯录,用到了选项菜单,每一个菜单项左边我都添加了一个小图标,运行后发现没有显示出来. 解决方案 利用反射机制,根据对象来寻找类,再根据类来找方法,在显示菜单选项的Activity中复写onMenuOpened方法: @Override public boolean onMenuOpened(int featureId, Menu menu) { if(menu!=null){ if(menu.getClass().getSimpleName().equalsIgnoreC

  • iOS11上Xcode9 AppIcon 图标不显示

    实例一: 打开工程目录下:[工程名]/Pods/Target Support Files/Pods-[工程名]/Pods-[工程名]-resources.sh这个文件,替换最后一段代码: 修改前: printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${

  • Android下拉刷新上拉加载控件(适用于所有View)

    前面写过一篇关于下拉刷新控件的文章下拉刷新控件终结者:PullToRefreshLayout,后来看到好多人还有上拉加载更多的需求,于是就在前面下拉刷新控件的基础上进行了改进,加了上拉加载的功能.不仅如此,我已经把它改成了对所有View都通用!可以随心所欲使用这两个功能~~ 我做了一个大集合的demo,实现了ListView.GridView.ExpandableListView.ScrollView.WebView.ImageView.TextView的下拉刷新和上拉加载.后面会提供demo的

随机推荐