首页 > 代码库 > 在小米 三星 索尼 手机 :图标上显示数字

在小米 三星 索尼 手机 :图标上显示数字

在小米 三星  索尼 手机 :图标上显示数字(未读消息数):这部分代码,是从QQ5.0.apk中找的。
小米已经测试通过了,
三星和索尼的,由于没有相应的手机,没有测试,有的,可能修改一下代码(判断是什么手机的代码),
测试一下,可以在回复一下测试结果,谢谢


1.原生系统(原生的Launcher ),只能修改快捷方式,增加和删除都会有toast提示

2.小米 三星  索尼 手机: 自定义的launcher:  发送显示未读消息数的action已经不同了。具体可以去看代码。。。


判断手机的代码:

/***
          * 在应用图标的快捷方式上加数字
          * @param clazz 启动的activity
          * @param isShowNum 是否显示数字
          * @param num 显示的数字:整型
          * @param isStroke 是否加上边框
          * 
          */
        public static void addNumShortCut(Context context,Class<?> clazz,boolean isShowNum, String num, boolean isStroke)
          {
                 Log.e(TAG, "manufacturer="+Build.MANUFACTURER);
            if (Build.MANUFACTURER.equalsIgnoreCase("Xiaomi")){
                    //小米
              xiaoMiShortCut(context, clazz, num);
              
            }else if(Build.MANUFACTURER.equalsIgnoreCase("samsung")){
                    //三星
                    samsungShortCut(context, num);
                    
            }else {//其他原生系统手机
                    installRawShortCut(context, MainActivity.class, isShowNum, num, isStroke);
            }
            
          }

下面写好的工具类,上面的方法也在其中。


/***
 * 应用的快捷方式工具类
 * 
 * @author yang
 * 
 */
public class AppShortCutUtil {

        private static final String TAG = "AppShortCutUtil";
        
        //默认圆角半径
        private static final int DEFAULT_CORNER_RADIUS_DIP = 8;
        //默认边框宽度
        private static final int DEFAULT_STROKE_WIDTH_DIP = 2;
        //边框的颜色
        private static final int DEFAULT_STROKE_COLOR = Color.WHITE;
        //中间数字的颜色
        private static final int DEFAULT_NUM_COLOR = Color.parseColor("#CCFF0000");


        /***
         * 
         * 生成有数字的图片(没有边框)
         * @param context
         * @param icon 图片
         * @param isShowNum 是否要绘制数字
         * @param num 数字字符串:整型数字 超过99,显示为"99+"
         * @return
         */
        public static Bitmap generatorNumIcon(Context context, Bitmap icon, boolean isShowNum, String num) {
                
                DisplayMetrics dm = context.getResources().getDisplayMetrics();
                //基准屏幕密度
                float baseDensity = 1.5f;//240dpi
                float factor = dm.density/baseDensity;
                
                Log.e(TAG, "density:"+dm.density);
                Log.e(TAG, "dpi:"+dm.densityDpi);
                Log.e(TAG, "factor:"+factor);
                
                // 初始化画布
                int iconSize = (int) context.getResources().getDimension(android.R.dimen.app_icon_size);
                Bitmap numIcon = Bitmap.createBitmap(iconSize, iconSize, Config.ARGB_8888);
                Canvas canvas = new Canvas(numIcon);

                // 拷贝图片
                Paint iconPaint = new Paint();
                iconPaint.setDither(true);// 防抖动
                iconPaint.setFilterBitmap(true);// 用来对Bitmap进行滤波处理,这样,当你选择Drawable时,会有抗锯齿的效果
                Rect src = http://www.mamicode.com/new Rect(0, 0, icon.getWidth(), icon.getHeight());>

在小米 三星 索尼 手机 :图标上显示数字