android launcher 日历icon显示星期

本文介绍如何在日历图标上添加当前日期对应的星期显示。通过修改Utilities.java中的createCalendarIconBitmap函数,利用Calendar类获取当前星期,并设置文本样式及位置,最终实现在图标上显示星期。

转自:http://blog.youkuaiyun.com/tfslovexizi/article/details/28437711

上一篇文档中谈到了在日历图标上显示当前日期,

现在我添加了几行代码,可以在日历图标上显示对应的星期;

修改源码是在Utilities.java中

函数createCalendarIconBitmap

添加几行代码:

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. int dayOfWeek = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);  
  2.          String weekStrings[] = {"周日","周一","周二","周三","周四","周五","周六"};  
  3.          String weekString = weekStrings[dayOfWeek];  

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. Paint mWeekPaint = new Paint();  
  2.             mWeekPaint.setTypeface(Typeface.DEFAULT_BOLD);  
  3.             mWeekPaint.setTextSize((int)10F * mDensity);  
  4.             mWeekPaint.setColor(0xff000000);  
  5.             mWeekPaint.setAntiAlias(true);  
  6.               
  7.             Rect rect1 = new Rect();  
  8.             mWeekPaint.getTextBounds(weekString,0,weekString.length(),rect1);  
  9.            int hoffset0 = 2;  
  10.             int width10 = rect1.right - rect1.left;  
  11.             int height10 = rect1.bottom - rect1.top + hoffset0;  
  12.             int width20 = calendarIcon.getWidth();  
  13.             int height20 = calendarIcon.getHeight() ;//+ hoffset0;  
  14.               
  15.             canvas.drawText(weekString,(width20 - width10)/2 - rect1.left,height10,mWeekPaint);  

修改后的函数为:

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. static Bitmap createCalendarIconBitmap(Drawable icon, Context context){  
  2.         Bitmap calendarIcon = createIconBitmap(icon,context);  
  3.         String dayString  = String.valueOf(Calendar.getInstance().get(Calendar.DAY_OF_MONTH));  
  4.         int dayOfWeek = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);  
  5.          String weekStrings[] = {"周日","周一","周二","周三","周四","周五","周六"};  
  6.          String weekString = weekStrings[dayOfWeek];  
  7.         Log.d("tanfusheng","weekString"+weekString);  
  8.         synchronized (sCanvas) {  
  9.             final Canvas canvas = sCanvas;  
  10.             canvas.setBitmap(calendarIcon);  
  11.               
  12.             final float mDensity = context.getResources().getDisplayMetrics().density;  
  13.               
  14.         Paint mWeekPaint = new Paint();  
  15.             mWeekPaint.setTypeface(Typeface.DEFAULT_BOLD);  
  16.             mWeekPaint.setTextSize((int)10F * mDensity);  
  17.             mWeekPaint.setColor(0xff000000);  
  18.             mWeekPaint.setAntiAlias(true);  
  19.             Rect rect1 = new Rect();  
  20.             mWeekPaint.getTextBounds(weekString,0,weekString.length(),rect1);  
  21.             int hoffset0 = 2;  
  22.             int width10 = rect1.right - rect1.left;  
  23.             int height10 = rect1.bottom - rect1.top + hoffset0;  
  24.             int width20 = calendarIcon.getWidth();  
  25.             int height20 = calendarIcon.getHeight() ;//+ hoffset0;  
  26.               
  27.             canvas.drawText(weekString,(width20 - width10)/2 - rect1.left,height10,mWeekPaint);  
  28.               
  29.             Paint mDatePaint = new Paint();  
  30.             mDatePaint.setTypeface(Typeface.DEFAULT_BOLD);  
  31.             mDatePaint.setTextSize((int)30F * mDensity);  
  32.             mDatePaint.setColor(0xff000000);  
  33.             mDatePaint.setAntiAlias(true);  
  34.             Rect rect = new Rect();  
  35.             mDatePaint.getTextBounds(dayString,0,dayString.length(),rect);  
  36.             int hoffset = 20;  
  37.             int width1 = rect.right - rect.left;  
  38.             int height1 = rect.bottom - rect.top;  
  39.             int width2 = calendarIcon.getWidth();  
  40.             int height2 = calendarIcon.getHeight() + hoffset;  
  41.               
  42.             canvas.drawText(dayString,(width2 - width1)/2 - rect.left,(height2 - height1)/2 - rect.top,mDatePaint);  
  43.               
  44.             canvas.setBitmap(null);  
  45.             return calendarIcon;  
  46.         }  
  47.     }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值