请帮我讲解一下下面的代码,3Q

rocky225 2011-12-18 07:48:27

//icon为一个Drawable,mOldBounds为一个Rect
final Bitmap.Config c = icon.getOpacity() !=
PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888:
Bitmap.Config.RGB_565;
final Bitmap thumb = Bitmap.createBitmap(width, height, c);
final Canvas canvas = new Canvas(thumb);
canvas.setDrawFilter(new PaintFlagsDrawFilter(Paint.DITHER_FLAG, 0));

mOldBounds.set(icon.getBounds());
icon.setBounds(0,0,width,height);
icon.draw(canvas);
icon.setBounds(mOldBounds);
icon = new BitmapDrawable(thumb);

TextView.setCompoundDrawablesWithIntrinsicBounds(null, icon, null, null);

最近在看Home这个例子的时候遇到上面的代码,看了很久还是不懂,因此求解...
感觉对于画图这块好像挺难懂的有些方法...
希望高手能花点时间,把这解释写得详细些,最好能每句都解释一下...谢谢
...全文
272 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rysle 2013-02-02
  • 打赏
  • 举报
回复

//以下代码目的是将从各个应用中读取出来的icon处理成指定大小的缩略图(thumb),也就是进行缩放
//看icon是否具有透明度,如果没有的话指定Bitmap颜色格式为RGB565,有则指定为ARGB8888
final Bitmap.Config c = icon.getOpacity() != 
                        PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888: 
                        Bitmap.Config.RGB_565;
//创建宽高为width,height的bitmap
final Bitmap thumb = Bitmap.createBitmap(width, height, c);
//创建canvas用于绘图,并指定绘制到thumb这张bitmap上
final Canvas canvas = new Canvas(thumb);
//指定filter为抖动,这样会使绘图效果更好一些
canvas.setDrawFilter(new PaintFlagsDrawFilter(Paint.DITHER_FLAG, 0));

//记录icon原来的bounds					
mOldBounds.set(icon.getBounds());
//设置icon的bounds为想要的宽高
icon.setBounds(0,0,width,height);
//绘制
icon.draw(canvas);
//恢复icon的bounds
icon.setBounds(mOldBounds);
//将thumb包装成一个BitmapDrawable
icon = new BitmapDrawable(thumb);

//将thumb设置为textview的compoundDrawable
TextView.setCompoundDrawablesWithIntrinsicBounds(null, icon, null, null);
大概就是这样,有什么不明白的可以再提问~
rocky225 2013-02-01
  • 打赏
  • 举报
回复
求解中.....
rocky225 2011-12-19
  • 打赏
  • 举报
回复
顶一下...
没人答????

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧